我正在构建一个系统,其中有以下表格:
- 歌曲
- 播送
- 车站
- 跟随
- 用户
用户关注电台,这些电台通过广播播放歌曲。
我正在根据用户关注的电台为用户构建歌曲“提要”。
这是查询:
SELECT DISTINCT ON ("broadcasts"."created_at", "songs"."id") songs.*
FROM "songs"
INNER JOIN "broadcasts" ON "songs"."shared_id" = "broadcasts"."song_id"
INNER JOIN "stations" ON "broadcasts"."station_id" = "stations"."id"
INNER JOIN "follows" ON "stations"."id" = "follows"."station_id"
WHERE "follows"."user_id" = 2
ORDER BY broadcasts.created_at desc
LIMIT 18
正如您在此处看到的,我收到重复的歌曲,这是因为我正在关注两个都播放同一首歌曲的电台:
注意:shared_id 与 id 相同。
我的问题是:如何修改此查询,使其仅根据其 id(或 shared_id)返回唯一歌曲?