Junior — Middle
Kuidas erinevad rekursiivsed ja mitte-rekursiivsed avaldised üldtabeli avaldustes (CTE) SQL-is?
sobes.tech AI
Vastus AI-lt
SQL-is ühise tabeli avaldis (CTE) on ajutine tulemus, mida saab kasutada peamises päringus. On kahte tüüpi CTE: rekursiivsed ja mitte-rekursiivsed.
-
Mitte-rekursiivne CTE: see on lihtsalt nimetatud ajutine andmekogum, mis määratletakse ühe päringuga. Seda saab kasutada keerukate päringute lihtsustamiseks või alam-päringute korduvkasutamiseks.
-
Rekursiivne CTE: see on CTE, mis viitab iseendale, võimaldades teha rekursiivseid operatsioone, näiteks hierarhiate või graafide läbimist.
Näide mitte-rekursiivsest CTE-st:
WITH RecentOrders AS (
SELECT * FROM Orders WHERE OrderDate > '2024-01-01'
)
SELECT * FROM RecentOrders WHERE CustomerID = 123;
Näide rekursiivsest CTE-st (kõigi alluvate töötajate otsimine):
WITH RECURSIVE Subordinates AS (
SELECT EmployeeID, ManagerID, Name FROM Employees WHERE EmployeeID = 1 -- juht
UNION ALL
SELECT e.EmployeeID, e.ManagerID, e.Name
FROM Employees e
INNER JOIN Subordinates s ON e.ManagerID = s.EmployeeID
)
SELECT * FROM Subordinates;
Sellisel viisil võimaldavad rekursiivsed CTE-d luua ahelaid ja hierarhiaid, samas kui mitte-rekursiivsed lihtsustavad lihtsalt päringu struktuuri.