Introductie tot recursieve CTE

Hiërarchische en recursieve queries in SQL Server

Jasmin Ludolf

Content Developer

De recursieve CTE

Bestaat uit 4 delen:

WITH cte_name AS (

-- Ankerlid initial_query
UNION ALL -- Recursief lid recursive_query termination_condition )
SELECT * FROM cte_name
Hiërarchische en recursieve queries in SQL Server

Handleiding voor een recursieve CTE

  • Voor meer dan 100 recursiestappen: verhoog het maximum:

    • OPTION(MAXRECURSION 32767)
  • Niet toegestaan in de recursieve member: GROUP BY, HAVING, LEFT JOIN, RIGHT JOIN, OUTER JOIN, SELECT DISTINCT, Subqueries,TOP

  • Het aantal kolommen van anker en recursief lid is gelijk

  • De datatypen van anker en recursief lid zijn gelijk

Hiërarchische en recursieve queries in SQL Server

Recursief voorbeeld

Faculteit berekenen:

De faculteit van n is het product van alle positieve gehele getallen ≤ n:

3! = 1 x 2 x 3 = 6

De faculteit n! is recursief gedefinieerd als:

  • 0! = 1 voor iteration = 1
  • (n+1)! = n! * (iteration+1) voor iteration > 1
Hiërarchische en recursieve queries in SQL Server

Recursief voorbeeld in code

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
Hiërarchische en recursieve queries in SQL Server

Laten we oefenen!

Hiërarchische en recursieve queries in SQL Server

Preparing Video For Download...