Рекурсивное общее табличное выражение (CTE) — это возможность SQL, которая позволяет запросу ссылаться на самого себя многократно, пока не будет выполнено условие завершения. Оно в основном используется для обработки иерархических или древовидных данных.
Рекурсивное CTE состоит из двух частей, объединённых с помощью UNION ALL:
WITH RECURSIVE cte_name AS (
-- Якорная часть
SELECT ...
UNION ALL
-- Рекурсивная часть
SELECT ... FROM cte_name JOIN ...
)
SELECT * FROM cte_name;
Рекурсивные CTE предоставляют читаемую и элегантную альтернативу сложной процедурной логике при работе с данными, которые имеют отношения родитель-потомок. Якорная часть определяет откуда начинается обход, а рекурсивная часть определяет как он продолжается на каждом уровне иерархии.
Якорный член рекурсивного CTE выполняется один раз для установки начального набора результатов, тогда как рекурсивный член выполняется повторно, используя результат предыдущей итерации как входные данные, пока не будут возвращены новые строки.
Новый — ещё не проверен сообществом
Вы