You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中STRING_AGG结果排序不符预期的调整方案咨询

解决方案

你需要对查询语句做两处修改,来匹配期望的结果:

  1. 给STRING_AGG添加DISTINCT关键字,确保播放列表名称去重(符合题目要求的“去重”列表);
  2. 调整排序逻辑,将播放列表ID的升序排序改为降序。

修改后的完整查询语句:

SELECT
t.composer,
STRING_AGG(DISTINCT p.name, ', ' ORDER BY p.playlist_id DESC) AS list_of_playlists
FROM playlist_track AS pt
JOIN track AS t
ON pt.track_id = t.track_id
JOIN playlist AS p
ON pt.playlist_id = p.playlist_id
WHERE p.name LIKE '%Classical%' AND t.composer IS NOT NULL
GROUP BY t.composer

说明

  • 添加DISTINCT:避免同一个作曲家因在某个播放列表中有多首歌曲,导致该播放列表名称被重复加入结果列表,严格满足“去重”的要求。
  • 改为ORDER BY p.playlist_id DESC:原查询按播放列表ID从小到大排序,所以ID12的Classical总是排在前面;改为降序后,ID更大的Classical 101系列播放列表(ID13、ID15)会排在Classical(ID12)前面,这正好匹配你期望的Antonio、Astor、Bela的列表顺序。

注:你期望结果中Aaron Copland的列表顺序与修改后结果不一致,可能是笔误——按统一逻辑,Classical 101 - The Basics应该排在Classical前面,这更符合将系列播放列表前置的需求。

内容的提问来源于stack exchange,提问作者Aditya Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 18:44:59