Обратный результат запроса 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;
Другие вопросы по тегам