假设我有一个歌曲表
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查询,也就是说,不是特定于某些数据库功能,那就太好了。请注意,不同的表中的列可能不同,所以如果我不需要在查询中写每个列名就更好了。
如果有人能给我提点建议,请告诉我。
发布于 2020-05-20 18:44:32
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()。
https://stackoverflow.com/questions/61911060
复制相似问题