Hierarchical and Recursive Queries in 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
หากต้องการ recursion มากกว่า 100 ขั้น ให้เพิ่มจำนวนขั้น recursion:
OPTION(MAXRECURSION 32767)คำสั่ง SQL ต่อไปนี้ไม่อนุญาตให้ใช้: GROUP BY, HAVING, LEFT JOIN, RIGHT JOIN, OUTER JOIN, SELECT DISTINCT, Subqueries,TOP
จำนวนคอลัมน์ของ anchor member และ recursive member ต้องเท่ากัน
ชนิดข้อมูลของ anchor member และ recursive member ต้องเหมือนกัน
การคำนวณแฟกทอเรียล:
แฟกทอเรียลของ
nคือผลคูณของจำนวนเต็มบวกทั้งหมดที่น้อยกว่าหรือเท่ากับn:
3! = 1 x 2 x 3 = 6
แฟกทอเรียล n! นิยามแบบ recursive ดังนี้:
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
Hierarchical and Recursive Queries in SQL Server