Sobes.tech
Junior — Middle

Explique o que são Expressões de Tabela Comuns Recursivas (CTE) e como são usadas em consultas SQL

sobes.tech IA

Resposta da IA

Expressões de Tabela Comum Recursivas (CTE) são um tipo especial de conjuntos de resultados temporários em SQL, que podem referenciar a si mesmas para executar consultas recursivas. São úteis para trabalhar com estruturas de dados hierárquicas ou gráficas, por exemplo, para percorrer uma árvore de categorias, organizar funcionários por subordinação, etc.

Um CTE recursivo consiste em duas partes:

  1. Consulta base — conjunto inicial de linhas.
  2. Consulta recursiva — usa os resultados da iteração anterior para obter o próximo nível de dados.

Exemplo: obter todos os subordinados de um funcionário com id = 1 em uma hierarquia de funcionários.

WITH RECURSIVE Subordinates AS (
    SELECT id, manager_id, name
    FROM employees
    WHERE id = 1  -- caso base
  
    UNION ALL
  
    SELECT e.id, e.manager_id, e.name
    FROM employees e
    INNER JOIN Subordinates s ON e.manager_id = s.id  -- caso recursivo
)
SELECT * FROM Subordinates;

Esta consulta primeiro seleciona o funcionário com id=1, depois recursivamente adiciona todos os funcionários cujo manager_id corresponde ao id dos funcionários já encontrados, até percorrer toda a hierarquia.