Come si differenziano le espressioni ricorsive e non ricorsive nelle espressioni di tabella comune (CTE) in SQL?
sobes.tech AI
Risposta dell'AI
L'espressione di tabella comune (CTE) in SQL è un risultato temporaneo che può essere utilizzato nella query principale. Esistono due tipi di CTE: ricorsivi e non ricorsivi.
-
CTE non ricorsivo: è semplicemente un insieme temporaneo di dati con nome, definito da una singola query. Può essere usato per semplificare query complesse o riutilizzare sottoquery.
-
CTE ricorsivo: è un CTE che si riferisce a se stesso, consentendo di eseguire operazioni ricorsive, come attraversare gerarchie o grafi.
Esempio di CTE non ricorsivo:
WITH RecentOrders AS (
SELECT * FROM Orders WHERE OrderDate > '2024-01-01'
)
SELECT * FROM RecentOrders WHERE CustomerID = 123;
Esempio di CTE ricorsivo (ricerca di tutti i subordinati di un dipendente):
WITH RECURSIVE Subordinates AS (
SELECT EmployeeID, ManagerID, Name FROM Employees WHERE EmployeeID = 1 -- capo
UNION ALL
SELECT e.EmployeeID, e.ManagerID, e.Name
FROM Employees e
INNER JOIN Subordinates s ON e.ManagerID = s.EmployeeID
)
SELECT * FROM Subordinates;
In questo modo, i CTE ricorsivi consentono di costruire catene e gerarchie, mentre quelli non ricorsivi semplificano semplicemente la struttura della query.