A common table expression (CTE) is a named temporary result set that exists within the scope of a single statement and that can be referred to later within that statement, possibly multiple times. The following discussion describes how to write statements that use CTEs.

1 Common Table Expressions (CTE)

WITH statement can be run directly like SELECT/UPDATE/INSERT/DELETE statements, and it can be used with

  • CREATE VIEW
  • CREATE TRIGGER
  • CREATE PROCEDURE/FUNCTION

Copy

WITH example

WITH boardlist AS (

	-- Owner
    SELECT kb_board.board_id
      FROM kb_board
     WHERE kb_board.user_code =  'xavi.escote'
       AND kb_board.board_archived = 0
     UNION ALL
    -- Invited
    SELECT kb_board.board_id
      FROM  kb_board ,kb_board_users
     WHERE kb_board.board_id  = kb_board_users.board_id
       AND kb_board_users.user_code =   'xavi.escote'
       AND kb_board.board_archived = 0    
     UNION ALL
    -- Team member
    SELECT kb_board.board_id
      FROM kb_board,kb_board_teams,kb_team_members
     WHERE kb_board.board_id  =  kb_board_teams.board_id
       AND kb_board_teams.team_id = kb_team_members.team_id
       AND kb_team_members.user_code =   'xavi.escote'
       AND kb_board.board_archived = 0
 )
SELECT 'card_name' name, card_id, card_name
  FROM kb_card      
 WHERE kb_card.board_id IN (SELECT board_id FROM boardlist)
   AND card_name LIKE '%new%'
UNION ALL
SELECT 'card_desc' name, card_id, card_desc
  FROM kb_card
 WHERE kb_card.board_id IN (SELECT board_id FROM boardlist)
   AND card_desc LIKE '%new%'
UNION ALL
SELECT 'note_desc' name, note_id, note_desc
  FROM kb_card, kb_card_notes
 WHERE kb_card.board_id IN (SELECT board_id FROM boardlist)
   AND kb_card.card_id = kb_card_notes.card_id
   AND note_desc LIKE '%new%'