SQL Server 的階層式與遞迴查詢
Jasmin Ludolf
Content Developer
由 4 個部分組成:
WITH cte_name AS (-- Anchor member initial_queryUNION ALL -- Recursive member recursive_query termination_condition )SELECT * FROM cte_name
若超過 100 次遞迴,請提高上限:
OPTION(MAXRECURSION 32767)不允許的 SQL 敘述:GROUP BY、HAVING、LEFT JOIN、RIGHT JOIN、OUTER JOIN、SELECT DISTINCT、Subqueries、TOP
錨點與遞迴成員的欄位數需相同
錨點與遞迴成員的資料型別需相同
計算階乘:
「
n的階乘」定義為小於等於n的所有正整數相乘:
3! = 1 x 2 x 3 = 6
階乘 n! 的遞迴定義如下:
0! = 1 for iteration = 1(n+1)! = n! * (iteration+1) for iteration > 1WITH recursion AS(SELECT 1 AS iterationCounter,1 AS factorialUNION ALL SELECT iterationCounter+1,factorial * (iterationCounter+1) FROM recursionWHERE iterationCounter < 10 )SELECT factorial FROM recursion
3628800
SQL Server 的階層式與遞迴查詢