Sobes.tech
Junior — Middle

¿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.