Junior — Middle
Jak se liší rekurzivní a nerrekurzivní výrazy v běžných tabulkových výrazech (CTE) v SQL?
sobes.tech AI
Odpověď od AI
Výraz společné tabulky (CTE) v SQL je dočasný výsledek, který lze použít v hlavním dotazu. Existují dva typy CTE: rekurzivní a nerrekurzivní.
-
Nerrekurzivní CTE: je jednoduše pojmenovaná dočasná sada dat definovaná jedním dotazem. Může být použita ke zjednodušení složitých dotazů nebo k opětovnému použití poddotazů.
-
Rekurzivní CTE: je CTE, který odkazuje sám na sebe, což umožňuje provádět rekurzivní operace, například procházení hierarchií nebo grafů.
Příklad nerrekurzivního CTE:
WITH RecentOrders AS (
SELECT * FROM Orders WHERE OrderDate > '2024-01-01'
)
SELECT * FROM RecentOrders WHERE CustomerID = 123;
Příklad rekurzivního CTE (hledání všech podřízených zaměstnanců):
WITH RECURSIVE Subordinates AS (
SELECT EmployeeID, ManagerID, Name FROM Employees WHERE EmployeeID = 1 -- nadřízený
UNION ALL
SELECT e.EmployeeID, e.ManagerID, e.Name
FROM Employees e
INNER JOIN Subordinates s ON e.ManagerID = s.EmployeeID
)
SELECT * FROM Subordinates;
Tímto způsobem rekurzivní CTE umožňují vytváření řetězců a hierarchií, zatímco nerrekurzivní pouze zjednodušují strukturu dotazu.