加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – 将子查询结果列合并为一列,然后在ORDER BY中使用

发布时间:2020-12-13 15:51:19 所属栏目:百科 来源:网络整理
导读:我想执行一些这样的查询: SELECT folders.*,(SELECT files.filename FROM files WHERE files.folder_id = folders.id ) as files FROM folders ORDER BY files[column name of filename] 子查询可能会给出多于1个结果,因此我想将结果加入到单个列文件名中.
我想执行一些这样的查询:

SELECT 
    folders.*,(SELECT 
        files.filename 
     FROM 
        files 
     WHERE 
        files.folder_id = folders.id 
    ) 
    as files 
FROM 
        folders 
ORDER BY 
    files[column name of filename]

子查询可能会给出多于1个结果,因此我想将结果加入到单个列文件名中.

我正在使用Postgres.
我添加了Rails作为标记,因为你可能会建议一些可以处理这个问题的Rails魔法.

解决方法

这将创建一个逗号分隔的文件夹中所有文件的列表:

select folders.*,(SELECT string_agg(files.filename,',')
        FROM files 
        WHERE files.folder_id = folders.id) as files
from folders

如果您需要在逗号分隔列表中对文件名进行排序,则可以在较新的Postgres版本中使用订单:

select folders.*,' order by files.filename)
        FROM files 
        WHERE files.folder_id = folders.id) as files
from folders

我不确定我是否理解“并在ORDER BY中使用它”的要求.如果该列包含多个文件,您如何期望总结果的正确顺序?您需要向我们展示一些示例输出(基于一些示例数据).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读