Hogyan különböznek a rekurzív és nem rekurzív kifejezések a SQL-ben az általános táblázatos kifejezésekben (CTE)?
sobes.tech MI
Válasz az MI-től
A SQL-ben az általános táblázatkifejezés (CTE) ideiglenes eredmény, amelyet a fő lekérdezésben lehet használni. Két típus létezik: rekurzív és nem rekurzív.
-
Nem rekurzív CTE: egyszerűen egy névvel ellátott ideiglenes adathalmaz, amelyet egyetlen lekérdezés határoz meg. Használható összetett lekérdezések egyszerűsítésére vagy al-lekérdezések újrahasznosítására.
-
Rekurzív CTE: olyan CTE, amely saját magára hivatkozik, lehetővé téve rekurzív műveletek végrehajtását, például hierarchiák vagy gráfok bejárását.
Nem rekurzív CTE példája:
WITH RecentOrders AS (
SELECT * FROM Orders WHERE OrderDate > '2024-01-01'
)
SELECT * FROM RecentOrders WHERE CustomerID = 123;
Rekurzív CTE példája (minden alárendelt alkalmazott keresése):
WITH RECURSIVE Subordinates AS (
SELECT EmployeeID, ManagerID, Name FROM Employees WHERE EmployeeID = 1 -- vezető
UNION ALL
SELECT e.EmployeeID, e.ManagerID, e.Name
FROM Employees e
INNER JOIN Subordinates s ON e.ManagerID = s.EmployeeID
)
SELECT * FROM Subordinates;
Így a rekurzív CTE-k láncokat és hierarchiákat építenek, míg a nem rekurzívak egyszerűen a lekérdezés szerkezetét könnyítik meg.