Назад к вопросам
Junior — Middle
75
Объясните, что такое рекурсивные Common Table Expressions (CTE) и как они используются в SQL-запросах
Ответ от нейросети
sobes.tech AI
Рекурсивные Common Table Expressions (CTE) — это особый вид временных результирующих наборов в SQL, которые могут ссылаться сами на себя для выполнения рекурсивных запросов. Они полезны для работы с иерархическими или графовыми структурами данных, например, для обхода дерева категорий, организации сотрудников по подчинённости и т.п.
Рекурсивный CTE состоит из двух частей:
- Базовый запрос — начальное множество строк.
- Рекурсивный запрос — использует результаты предыдущей итерации для получения следующего уровня данных.
Пример: получение всех подчинённых сотрудника с id = 1 в иерархии сотрудников.
WITH RECURSIVE Subordinates AS (
SELECT id, manager_id, name
FROM employees
WHERE id = 1 -- базовый случай
UNION ALL
SELECT e.id, e.manager_id, e.name
FROM employees e
INNER JOIN Subordinates s ON e.manager_id = s.id -- рекурсивный случай
)
SELECT * FROM Subordinates;
Такой запрос сначала выбирает сотрудника с id=1, затем рекурсивно добавляет всех сотрудников, у которых manager_id совпадает с id уже найденных сотрудников, пока не переберёт всю иерархию.