Обратный результат запроса SELECT
У меня есть рекурсивный запрос, который возвращает несколько строк из иерархической модели. Вид:
files_array := ARRAY
(WITH RECURSIVE files_to_parent AS (
SELECT FileID, Name, ParentID
FROM File
WHERE FileID = file_id
UNION ALL
SELECT F.FileID, F.Name, F.ParentID
FROM files_to_parent ftp, File F
WHERE F.FileID = FTP.ParentID
)
SELECT Name FROM files_to_parent);
Как я могу отменить результат запроса SELECT?
PS: я не могу заказать по идентификатору, идентификатор родителя может быть больше или меньше, чем у ребенка.
1 ответ
Решение
Вы должны добавить явное ORDER BY
пункт, чтобы получить определенный заказ:
WITH RECURSIVE files_to_parent AS (
SELECT FileID, Name, ParentID,
1 AS recursion_depth
FROM File
WHERE FileID = file_id
UNION ALL
SELECT F.FileID, F.Name, F.ParentID,
ftp.recursion_depth + 1
FROM files_to_parent ftp
JOIN File F ON F.FileID = FTP.ParentID
)
SELECT Name
FROM files_to_parent
ORDER BY recursion_depth DESC;