Я выполняю рекурсивный запрос в Postgres для получения списка электронных писем и их дочерних элементов следующим образом:
WITH RECURSIVE cte (id, title, path, parent_id, depth) AS (
SELECT id,
title,
array[id] AS path,
parent_id,
1 AS depth
FROM emails
WHERE parent_id IS NULL
UNION ALL
SELECT emails.id,
emails.title,
cte.path || emails.id,
emails.parent_id,
cte.depth + 1 AS depth
FROM emails
JOIN cte ON emails.parent_id = cte.id
)
SELECT id, title, path, parent_id, depth FROM cte
ORDER BY path;
Как будет происходить изменение порядка в списке (например, сортировка по заголовку), прежде чем найти детям электронные письма.Очевидно, мне нужно сохранить внешний ORDER BY, чтобы список получался в древовидном порядке, и Postgres не позволит мне вставить предложение ORDER BY перед UNION ALL.
Спасибо,