如何在postgres中把多个值收集成一个字符串?[英] how to collect multiple values as a single string in postgres?

本文是小编为大家收集整理的关于如何在postgres中把多个值收集成一个字符串?的处理方法,想解了如何在postgres中把多个值收集成一个字符串?的问题怎么解决?如何在postgres中把多个值收集成一个字符串?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有桌子:

Project table

id name
-------
1  A
2  B

Assignment table

id name project_id
-------------------
1  A1   1
2  A2   1
3  A3   2

我希望编写一个查询,返回每个项目以及从中创建的作业的名称,例如:

project_id  assignments
-----------------------
1            A1,A2
2            A3

有什么方法可以实现吗?

推荐答案

你可以加入表格,并使用 array_agg 组合以逗号分隔的值

SELECT a.id, array_agg(b.name) assignments
FROM    Project a
        INNER JOIN assignment b
          ON a.id = b.project_ID
GROUP BY a.id

SQLFiddle 演示

或使用 STRING_AGG

SELECT a.id, STRING_AGG(b.name, ', ' ORDER BY b.name) assignments
FROM    Project a
        INNER JOIN assignment b
          ON a.id = b.project_ID
GROUP BY a.id

SQLFiddle 演示

本文地址:https://www.itbaoku.cn/post/1763887.html