Что такое сложные CTE

«Что такое сложные CTE» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Сложные CTE (Common Table Expressions) — это временные результаты запроса, которые можно использовать внутри другого SQL-запроса. В отличие от простых CTE, сложные могут включать рекурсию, множественные подзапросы или агрегацию.

Пример рекурсивной CTE для обхода дерева:

WITH RECURSIVE tree AS (
    SELECT id, parent_id, name FROM nodes WHERE parent_id IS NULL
    UNION ALL
    SELECT n.id, n.parent_id, n.name FROM nodes n
    JOIN tree t ON n.parent_id = t.id
)
SELECT * FROM tree;

Особенности:

  • Могут ссылаться на себя (рекурсия).
  • Позволяют разбивать сложные запросы на логические блоки.
  • Улучшают читаемость SQL-кода.
  • Временные, существуют только во время выполнения запроса.