gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:22:54 29 4
gpt4 key购买 nike

我想执行这样的查询:

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.*,
(SELECT string_agg(files.filename, ',' order by files.filename)
FROM files
WHERE files.folder_id = folders.id) as files
from folders

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

关于postgresql - 将子查询结果列合并为一个列,然后在 ORDER BY 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14933713/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com