Hoe verschillen recursieve en niet-recursieve uitdrukkingen in Common Table Expressions (CTE) in SQL?
sobes.tech AI
Antwoord van AI
De Common Table Expression (CTE) in SQL is een tijdelijke resultaat dat in de hoofdquery kan worden gebruikt. Er zijn twee typen CTE's: recursief en niet-recursief.
-
Niet-recursieve CTE: is eenvoudigweg een benoemd tijdelijke gegevensset, gedefinieerd door één query. Het kan worden gebruikt om complexe queries te vereenvoudigen of subqueries opnieuw te gebruiken.
-
Recursieve CTE: is een CTE die naar zichzelf verwijst, waardoor recursieve operaties kunnen worden uitgevoerd, zoals het doorlopen van hiërarchieën of grafen.
Voorbeeld van een niet-recursieve CTE:
WITH RecentOrders AS (
SELECT * FROM Orders WHERE OrderDate > '2024-01-01'
)
SELECT * FROM RecentOrders WHERE CustomerID = 123;
Voorbeeld van een recursieve CTE (zoeken van alle ondergeschikten van een werknemer):
WITH RECURSIVE Subordinates AS (
SELECT EmployeeID, ManagerID, Name FROM Employees WHERE EmployeeID = 1 -- baas
UNION ALL
SELECT e.EmployeeID, e.ManagerID, e.Name
FROM Employees e
INNER JOIN Subordinates s ON e.ManagerID = s.EmployeeID
)
SELECT * FROM Subordinates;
Op deze manier maken recursieve CTE's het mogelijk om ketens en hiërarchieën op te bouwen, terwijl niet-recursieve CTE's de query-structuur eenvoudig houden.