บทนำ Recursive CTE

Hierarchical and Recursive Queries in SQL Server

Jasmin Ludolf

Content Developer

Recursive CTE

ประกอบด้วย 4 ส่วน:

WITH cte_name AS (

-- Anchor member initial_query
UNION ALL -- Recursive member recursive_query termination_condition )
SELECT * FROM cte_name
Hierarchical and Recursive Queries in SQL Server

แนวทางการใช้ Recursive CTE

  • หากต้องการ 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 ต้องเหมือนกัน

Hierarchical and Recursive Queries in SQL Server

ตัวอย่าง Recursive

การคำนวณแฟกทอเรียล:

แฟกทอเรียลของ n คือผลคูณของจำนวนเต็มบวกทั้งหมดที่น้อยกว่าหรือเท่ากับ n:

3! = 1 x 2 x 3 = 6

แฟกทอเรียล n! นิยามแบบ recursive ดังนี้:

  • 0! = 1 for iteration = 1
  • (n+1)! = n! * (iteration+1) for iteration > 1
Hierarchical and Recursive Queries in SQL Server

ตัวอย่าง Recursive ในโค้ด

WITH recursion AS

(SELECT 1 AS iterationCounter,1 AS factorial
UNION ALL SELECT iterationCounter+1,factorial * (iterationCounter+1) FROM recursion
WHERE iterationCounter < 10 )
SELECT factorial FROM recursion
3628800
Hierarchical and Recursive Queries in SQL Server

มาฝึกกันเถอะ!

Hierarchical and Recursive Queries in SQL Server

Preparing Video For Download...