簡體   English   中英

SQL 查詢從每列的分組記錄中獲取不同的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM