【发布时间】:2020-04-09 13:24:15
【问题描述】:
在 PostgreSQL 数据库中,有两个实体具有多对多关系:songs 具有多对多 artists。 artists_songs 表用于关系。我想选择歌曲并按第一位艺术家对它们进行排序(按字母顺序排序)。目前 PG 不允许我在不指定 group by 的所有字段的情况下这样做。是否可以仅按songs.id 分组选择和排序歌曲?
这是我的 SQL 查询:
select ss.*
from (
select songs.*, min(artists.name) as artist_name
from songs
left join artists_songs on artists_songs.song_id = songs.id
left join artists on artists.id = artists_songs.artist_id
group by songs.id, artists.name
) ss
group by ss.id
order by ss.artist_name
;
【问题讨论】:
-
不要 GROUP BY 列作为设置函数的参数,例如艺术家姓名。
标签: sql postgresql join group-by sql-order-by