Úvod do rekurzivního CTE

Hierarchical and Recursive Queries in SQL Server

Jasmin Ludolf

Content Developer

Rekurzivní CTE

Skládá se ze 4 částí:

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

Zásady použití rekurzivního CTE

  • Pro více než 100 kroků rekurze zvyšte jejich počet:

    • OPTION(MAXRECURSION 32767)
  • Následující příkazy SQL nejsou povoleny: GROUP BY, HAVING, LEFT JOIN, RIGHT JOIN, OUTER JOIN, SELECT DISTINCT, Subqueries,TOP

  • Počet sloupců kotevního a rekurzivního členu musí být stejný

  • Datové typy kotevního a rekurzivního členu musí být stejné

Hierarchical and Recursive Queries in SQL Server

Rekurzivní příklad

Výpočet faktoriálu:

Faktoriál čísla n je definován jako součin všech kladných celých čísel menších nebo rovných n:

3! = 1 x 2 x 3 = 6

Faktoriál n! je rekurzivně definován takto:

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

Rekurzivní příklad v kódu

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

Pojďme si procvičit!

Hierarchical and Recursive Queries in SQL Server

Preparing Video For Download...