Como diferem as expressões recursivas e não recursivas em expressões de tabela comum (CTE) em SQL?
sobes.tech IA
Resposta da IA
A expressão de tabela comum (CTE) em SQL é um resultado temporário que pode ser usado na consulta principal. Existem dois tipos de CTE: recursivos e não recursivos.
-
CTE não recursivo: é simplesmente um conjunto de dados temporários com nome definido por uma única consulta. Pode ser usado para simplificar consultas complexas ou reutilizar subconsultas.
-
CTE recursivo: é um CTE que se refere a si mesmo, permitindo realizar operações recursivas, como percorrer hierarquias ou grafos.
Exemplo de CTE não recursivo:
WITH RecentOrders AS (
SELECT * FROM Orders WHERE OrderDate > '2024-01-01'
)
SELECT * FROM RecentOrders WHERE CustomerID = 123;
Exemplo de CTE recursivo (busca de todos os subordinados de um funcionário):
WITH RECURSIVE Subordinates AS (
SELECT EmployeeID, ManagerID, Name FROM Employees WHERE EmployeeID = 1 -- chefe
UNION ALL
SELECT e.EmployeeID, e.ManagerID, e.Name
FROM Employees e
INNER JOIN Subordinates s ON e.ManagerID = s.EmployeeID
)
SELECT * FROM Subordinates;
Assim, os CTE recursivos permitem construir cadeias e hierarquias, enquanto os não recursivos simplesmente simplificam a estrutura da consulta.