Ինչպես են տարբերվում ռեկուրսիվ և ռեկուրսիվ չհամապատասխանող արտահայտությունները SQL-ում ընդհանուր աղյուսակային արտահայտությունների (CTE) մեջ։
sobes.tech AI
Պատասխան AI-ից
SQL-ում ընդհանուր սեղանի արտահայտությունը (CTE) ժամանակավոր արդյունք է, որը կարելի է օգտագործել հիմնական հարցում: Կան երկու տեսակի CTE՝ ռեկուրսիվ և ոչ ռեկուրսիվ:
-
Ոչ ռեկուրսիվ CTE՝ պարզապես անվանված ժամանակավոր տվյալների հավաքածու է, որը սահմանվում է մեկ հարցումով: Այն կարող է օգտագործվել բարդ հարցումները պարզեցնելու կամ ենթահարցեր կրկնակի օգտագործման համար:
-
Ռեկուրսիվ CTE՝ դա այն CTE-ն է, որը հղում է իր վրա, թույլ տալով կատարել ռեկուրսիվ գործողություններ, օրինակ՝ հիերարխիաների կամ գրաֆների անցում:
Ոչ ռեկուրսիվ CTE-ի օրինակ՝
WITH RecentOrders AS (
SELECT * FROM Orders WHERE OrderDate > '2024-01-01'
)
SELECT * FROM RecentOrders WHERE CustomerID = 123;
Ռեկուրսիվ CTE-ի օրինակ՝ (բոլոր ենթական աշխատակիցների որոնում)
WITH RECURSIVE Subordinates AS (
SELECT EmployeeID, ManagerID, Name FROM Employees WHERE EmployeeID = 1 -- ղեկավար
UNION ALL
SELECT e.EmployeeID, e.ManagerID, e.Name
FROM Employees e
INNER JOIN Subordinates s ON e.ManagerID = s.EmployeeID
)
SELECT * FROM Subordinates;
Այսպիսով, ռեկուրսիվ CTE-ները թույլ են տալիս կառուցել շղթաներ և հիերարխիաներ, մինչդեռ ոչ ռեկուրսիվները պարզապես պարզեցնում են հարցման կառուցվածքը։