WITH cte_test AS( SELECT AreaID,AreaName FROM dbo.Area WHERE AreaParentID=0 UNION ALL SELECT a.AreaID,a.AreaName FROM dbo.Area a JOIN cte_test c ON a.AreaParentID=c.AreaID ) SELECT * FROM cte_test
指定臨時命名的結果集,這些結果集稱爲公用表表達式 (CTE)。公用表表達式可以包括對自身的引用。這種表達式稱爲遞歸公用表表達式。
對於遞歸公用表達式來說,實現原理也是相同的,同樣需要在語句中定義兩部分:
- 基本語句
- 遞歸語句
在SQL這兩部分通過UNION ALL連接結果集進行返回: