【问题标题】:Reverse SELECT query result反向 SELECT 查询结果
【发布时间】:2019-01-31 12:00:16
【问题描述】:

我有递归查询,它从分层模型返回一些行。 种类:

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:我不能按 ID 排序,父母的 id 可以或多或少然后在孩子。

【问题讨论】:

  • 添加一个人工的“递归深度”列并按此排序。
  • @LaurenzAlbe 太好了,谢谢。我知道答案在顶部)))

标签: postgresql sql-order-by recursive-cte


【解决方案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;

【讨论】:

    猜你喜欢
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 2013-01-19
    • 2021-12-26
    相关资源
    最近更新 更多