定義:
遞歸SQL在數據庫中,通過CTE(Common Table Expression)來實現。遞歸SQL由遞歸CTE以及對遞歸CTE結果的查詢組成。
簡而言之,如果CTE中的FULL SELECT 在FROM 子句中引用到CTE本身,就是遞歸CTE。遞歸CTE由3部分組成:
1、初始查詢
初始查詢是CTE中對基本表進行查詢的部分。CTE定義中的第一個FULLSELECT畢須不包含對CTE自身的應用。
2、遞歸查詢
遞歸查詢就是通過對CTE自身的引用,啓動遞歸邏輯的查詢。遞歸查詢需要遵循以下幾點:
- 遞歸查詢和初始查詢結果必須包含相同數量的數據列;
- 遞歸查詢和初始查詢結果數據列的、長度等必須一致;
- 遞歸查詢不能包含 GROUP BY 或者 HAVING 子句;
- 遞歸查詢不能包含 Outer Join;
- 遞歸查詢不能包含子查詢 (Subquery);
- 遞歸查詢必須用 UNION ALL 聯結。
終止條件通常是隱形的,即如果前一次遞歸查詢返回的結果集爲空,則終止遞歸;也可以在遞歸查詢中設定終止條件,如限定遞歸查詢的深度等。
原文:
原文地址點擊打開鏈接,如果你已經瞭解過遞歸SQL,那麼可以直接看下面的實例。如果不熟悉,建議直接看原文。
實例:
1、
2、
3、
4、
5、
6、
7、
8、
9、