sql - 如何在连接的聚合查询中聚合字段中的多行

标签 sql postgresql join

我有两个表:

表 1:

id | color | qty
---|-------|-----
1  | red   | 10
2  | green | 20
3  | blue  | 50

表 2:

id | shade  
---|-------
1  | light
1  | dark   
2  | light
3  | light
3  | dark 

我如何编写一个查询来连接两个表并将阴影作为逗号分隔的字符串返回,即

1 | red   | light, dark | 10
2 | green | light       | 20
3 | blue  | light, dark | 50

最佳答案

如果您使用的是 9.0 或更高版本,您可以使用带有 « string_agg » 的聚合查询:

SELECT 
    t1.id,
    t1.color,
    string_agg(t2.shade, ', ')
    t1.quantity
FROM
    table1 as t1
    INNER JOIN table2 t2 on t2.id = t1.id
GROUP BY
    t1.id,
    t1.color,
    t1.quantity

关于sql - 如何在连接的聚合查询中聚合字段中的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53972919/

相关文章:

sql - 有没有办法优化我的 bigquery sql 以便运行得更快?

SQL 甲骨文 : how to find records maching a particular id in the column

join - Datomic - 没有引用的实体之间的连接

MySQL:通过一系列关系连接表——减少重复表读取

php - 在同一查询中查询帖子和标签

mysql - SQL where查询到IN条件的第一行

sql - 如何按rails中关联的created_at列排序?

node.js - nodejs 的网络服务和日期延迟一天出现

sql - 从 "YYYY-MM"varchar 自动转换到 PostgreSQL 中的日期

postgresql - 是否可以将 firebase 云 firestore 数据导出到 postgresql?