Care este diferența dintre expresiile recursive și non-recursive în expresiile comune de tabel (CTE) în SQL?
sobes.tech AI
Răspuns de la AI
Expresia comună de tabel (CTE) în SQL este un rezultat temporar care poate fi utilizat în interogarea principală. Există două tipuri de CTE: recursive și non-recursive.
-
CTE non-recursive: este pur și simplu un set temporar de date denumit, definit printr-o singură interogare. Poate fi folosit pentru a simplifica interogările complexe sau pentru reutilizarea subinterogărilor.
-
CTE recursive: este un CTE care se referă pe sine însuși, permițând efectuarea de operații recursive, cum ar fi traversarea ierarhiilor sau grafurilor.
Exemplu de CTE non-recursive:
WITH RecentOrders AS (
SELECT * FROM Orders WHERE OrderDate > '2024-01-01'
)
SELECT * FROM RecentOrders WHERE CustomerID = 123;
Exemplu de CTE recursive (căutarea tuturor subordonaților unui angajat):
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;
Astfel, CTE-urile recursive permit construirea de lanțuri și ierarhii, în timp ce cele non-recursive simplifică structura interogării.