[英]SQL query to get distinct values from grouped records of each column
假设,我有一张歌曲表
Table name: Songs
- id
- artist
- composer
- lyricist
我想编写一个 sql 查询,以便我可以从按 id 分组的记录中获取不同的值。 例子:
Id Artist Composer Lyricist
1 a1 c1 l1
1 a2 c1 l1
1 a1 c2 l1
2 a3 c1 l2
2 a4 c1 l3
查询应该返回
Id Artist Composer Lyricist
1 a1, a2 c1, c2 l1
2 a3, a4 c1 l2, l3
如果我能得到一个通用的 SQL 查询,即不特定于某些数据库功能,那就太好了。 请注意,不同表中的列可能会有所不同,所以最好不要在查询中写下每个列名。
请,如果有人可以提出一些建议。
Postgres SQL 版本使用string_agg()
或array_agg()
:
select id,
string_agg(distinct artist, ','),
string_agg(distinct composer, ','),
string_agg(distinct lyricist, ',')
from t
group by id;
通用 SQL 版本称为listagg()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.