Junior — Middle
Kā atšķiras rekursīvās un nerekurzīvās izteiksmes kopējās tabulas izteiksmēs (CTE) SQL?
sobes.tech AI
Atbilde no AI
Kopējās tabulas izteiksme (CTE) SQL ir pagaidu rezultāts, ko var izmantot galvenajā vaicājumā. Pastāv divu veidu CTE: rekursīvie un nerekursīvie.
-
Nerekursīvais CTE: tas ir vienkārši nosaukts pagaidu datu kopums, kas definēts ar vienu vaicājumu. To var izmantot sarežģītu vaicājumu vienkāršošanai vai apakšvaicājumu atkārtotai lietošanai.
-
Rekursīvais CTE: tas ir CTE, kas atsaucas uz sevi, ļaujot veikt rekursīvas operācijas, piemēram, hierarhiju vai grafu pārlūkošanu.
Nerekursīva CTE piemērs:
WITH RecentOrders AS (
SELECT * FROM Orders WHERE OrderDate > '2024-01-01'
)
SELECT * FROM RecentOrders WHERE CustomerID = 123;
Rekursīva CTE piemērs (visu pakļauto darbinieku meklēšana):
WITH RECURSIVE Subordinates AS (
SELECT EmployeeID, ManagerID, Name FROM Employees WHERE EmployeeID = 1 -- vadītājs
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ādējādi, rekursīvie CTE ļauj veidot ķēdes un hierarhijas, kamēr nerekursīvie vienkārši vienkāršo vaicājuma struktūru.