¿En qué se diferencian las expresiones recursivas y no recursivas en las expresiones de tabla común (CTE) en SQL?
sobes.tech AI
Respuesta de la IA
La expresión de tabla común (CTE) en SQL es un resultado temporal que se puede usar en la consulta principal. Hay dos tipos de CTE: recursivos y no recursivos.
-
CTE no recursivo: es simplemente un conjunto de datos temporal con nombre definido por una sola consulta. Se puede usar para simplificar consultas complejas o reutilizar subconsultas.
-
CTE recursivo: es un CTE que se refiere a sí mismo, permitiendo realizar operaciones recursivas, como recorrer jerarquías o grafos.
Ejemplo de CTE no recursivo:
WITH RecentOrders AS (
SELECT * FROM Orders WHERE OrderDate > '2024-01-01'
)
SELECT * FROM RecentOrders WHERE CustomerID = 123;
Ejemplo de CTE recursivo (búsqueda de todos los subordinados de un empleado):
WITH RECURSIVE Subordinates AS (
SELECT EmployeeID, ManagerID, Name FROM Employees WHERE EmployeeID = 1 -- jefe
UNION ALL
SELECT e.EmployeeID, e.ManagerID, e.Name
FROM Employees e
INNER JOIN Subordinates s ON e.ManagerID = s.EmployeeID
)
SELECT * FROM Subordinates;
De esta forma, los CTE recursivos permiten construir cadenas y jerarquías, mientras que los no recursivos simplemente simplifican la estructura de la consulta.