Hierarkiska och rekursiva frågor i SQL Server
Jasmin Ludolf
Content Developer
Består av 4 delar:
WITH cte_name AS (-- Anchor member initial_queryUNION ALL -- Recursive member recursive_query termination_condition )SELECT * FROM cte_name
Vid fler än 100 rekursionssteg, öka antalet tillåtna steg:
OPTION(MAXRECURSION 32767)Följande SQL-satser är inte tillåtna: GROUP BY, HAVING, LEFT JOIN, RIGHT JOIN, OUTER JOIN, SELECT DISTINCT, Subqueries,TOP
Antalet kolumner i anchor- och rekursiv medlem måste vara detsamma
Datatyperna i anchor- och rekursiv medlem måste vara desamma
Beräkning av fakultet:
Fakulteten av
ndefinieras som produkten av alla positiva heltal mindre än eller lika medn:
3! = 1 x 2 x 3 = 6
Fakulteten n! definieras rekursivt enligt följande:
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
Hierarkiska och rekursiva frågor i SQL Server