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

如何使用STRING_AGG从三个关联表获取逗号分隔的球员姓名

问题:按球队分组获取逗号分隔的球员姓名列表

表结构

  • Teams:Id
  • Players:Id、Name
  • TeamsPlayers:Id、TeamId、PlayerId

期望结果

TeamIdPlayerNames
1Ronaldo,Rivaldo,Ronaldinho,Dida
2Riquelme,Messi,Aguero,DiMaria

尝试的SQL语句

SELECT STRING_AGG(Name, ',')
FROM (
    SELECT tp.TeamId, p.Name
    FROM Players p
    JOIN TeamPlayers tp ON p.Id = tp.PlayerId
    GROUP BY tp.TeamId, p.Name
    )

正确实现方法

你的SQL存在两个问题:

  1. 子查询中按tp.TeamId, p.Name分组属于多余操作,这会让每个球员单独成为一组,失去按球队聚合的意义;
  2. 主查询未按TeamId分组,最终只会返回所有球员姓名拼接成的单个字符串,无法按球队区分结果。

正确的SQL语句如下:

SELECT tp.TeamId, STRING_AGG(p.Name, ',') AS PlayerNames
FROM Players p
JOIN TeamPlayers tp ON p.Id = tp.PlayerId
GROUP BY tp.TeamId

直接关联Players和TeamsPlayers表后,按TeamId分组,对每组内的球员姓名使用STRING_AGG函数进行逗号分隔的拼接,即可得到按球队分组的球员姓名列表。

内容的提问来源于stack exchange,提问作者Sebastián Rubina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:10:55