Junior — Middle
Kako se razlikuju rekurzivne i nerrekurzivne izraze u zajedničkim tabelarnim izrazima (CTE) u SQL?
sobes.tech АИ
Одговор од АИ
Izraz zajedničke tabele (CTE) u SQL-u je privremeni rezultat koji se može koristiti u glavnom upitu. Postoje dve vrste CTE: rekurzivne i nerekurzivne.
-
Nerekurzivni CTE: jednostavno je imenovani privremeni skup podataka definisan jednim upitom. Može se koristiti za pojednostavljenje složenih upita ili za ponovnu upotrebu podupita.
-
Rekurzivni CTE: je CTE koji se odnosi na sebe, omogućavajući izvođenje rekurzivnih operacija, kao što su prolazak kroz hijerarhije ili grafove.
Primer nerekurzivnog CTE:
WITH RecentOrders AS (
SELECT * FROM Orders WHERE OrderDate > '2024-01-01'
)
SELECT * FROM RecentOrders WHERE CustomerID = 123;
Primer rekurzivnog CTE (pretraživanje svih podređenih zaposlenih):
WITH RECURSIVE Subordinates AS (
SELECT EmployeeID, ManagerID, Name FROM Employees WHERE EmployeeID = 1 -- šef
UNION ALL
SELECT e.EmployeeID, e.ManagerID, e.Name
FROM Employees e
INNER JOIN Subordinates s ON e.ManagerID = s.EmployeeID
)
SELECT * FROM Subordinates;
Na ovaj način, rekurzivni CTE omogućavaju građenje lanaca i hijerarhija, dok nerekurzivni samo pojednostavljuju strukturu upita.