SQL 與資料轉換 中階
SQL CTE 與遞迴查詢
請說明 CTE 的用途,以及遞迴 CTE 的工作原理。
CTE(Common Table Expression)
用 WITH 子句定義具名的暫時結果集,讓複雜查詢更易讀、可重用。
遞迴 CTE
用於查詢層級/圖形結構,如組織架構、類別樹。語法為 WITH RECURSIVE,包含兩部分:
- 錨點查詢(Anchor):初始行(如根節點)。
- 遞迴查詢:引用 CTE 自身,每次迭代基於上次結果擴展。
遞迴 CTE 範例
WITH RECURSIVE org AS ( SELECT id, name, manager_id, 1 AS depth FROM employees WHERE manager_id IS NULL UNION ALL SELECT e.id, e.name, e.manager_id, o.depth + 1 FROM employees e JOIN org o ON e.manager_id = o.id ) SELECT * FROM org ORDER BY depth;
注意
遞迴 CTE 需防止無窮迴圈,通常加 depth 限制或確保資料無循環引用。
✦ AI 模擬面試
輸入你的答案,AI 即時分析精準度與改進空間
登入後即可使用 AI 評分
