Junior — Middle
Ako sa líšia rekurzívne a nerrekurzívne výrazy v bežných tabulkových výrazoch (CTE) v SQL?
sobes.tech AI
Odpoveď od AI
Výraz spoločnej tabuľky (CTE) v SQL je dočasný výsledok, ktorý možno použiť v hlavnom dopyte. Existujú dva typy CTE: rekurzívne a nerrekurzívne.
-
Nerrekurzívne CTE: je jednoducho pomenovaný dočasný súbor údajov definovaný jedným dopytom. Môže sa použiť na zjednodušenie zložitých dopytov alebo na opätovné použitie poddopytov.
-
Rekurzívne CTE: je CTE, ktorý sa odvoláva na seba samého, čo umožňuje vykonávať rekurzívne operácie, ako je prechádzanie hierarchiami alebo grafmi.
Príklad nerrekurzívneho CTE:
WITH RecentOrders AS (
SELECT * FROM Orders WHERE OrderDate > '2024-01-01'
)
SELECT * FROM RecentOrders WHERE CustomerID = 123;
Príklad rekurzívneho CTE (hľadanie všetkých podriadených zamestnancov):
WITH RECURSIVE Subordinates AS (
SELECT EmployeeID, ManagerID, Name FROM Employees WHERE EmployeeID = 1 -- šéf
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 spôsobom rekurzívne CTE umožňujú budovanie reťazcov a hierarchií, zatiaľ čo nerrekurzívne iba zjednodušujú štruktúru dopytu.