我使用 PostgreSQL 9.1(我们的托管平台升级后立即使用 9.2)进行此查询:
SELECT
media_files.album,
media_files.artist,
ARRAY_AGG (media_files. ID) AS media_file_ids
FROM
media_files
INNER JOIN playlist_media_files ON media_files.id = playlist_media_files.media_file_id
WHERE
playlist_media_files.playlist_id = 1
GROUP BY
media_files.album,
media_files.artist
ORDER BY
media_files.album ASC
它工作正常,目标是提取专辑/艺术家组合,并在结果集中具有该特定组合的媒体文件 ID 数组。
问题是我在媒体文件中有另一列,即artwork
.
artwork
对于每个媒体文件(即使在同一个专辑中)都是唯一的,但在结果集中我只需要返回该集中的第一个。
因此,对于有 10 个媒体文件的专辑,我也有 10 个相应的艺术品,但我只想返回第一个(或为该收藏随机挑选的一个)。
这可能只与 SQL/窗口函数(first_value over..)有关吗?