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%'