You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

PostgreSQL两表关联查询:聚合用户技能为逗号分隔格式

这题我太熟了!PostgreSQL里刚好有专门的字符串聚合函数能完美解决这个需求,直接用STRING_AGG就能把同一用户的技能合并成逗号分隔的字符串,一步到位。

完整查询SQL

SELECT 
    u.fullname,
    u.email,
    STRING_AGG(s.skills, ',') AS skills
FROM 
    "USER" u
INNER JOIN 
    SKILLS s ON u.id = s.user_id
GROUP BY 
    u.id, u.fullname, u.email;

代码解释

  1. 表关联:用INNER JOINUSER表和SKILLS表通过用户ID关联起来,确保每个技能都能对应到所属的用户;
  2. 分组聚合:通过GROUP BY按用户的唯一标识(idfullnameemail)分组,这样每个用户只会生成一行结果;
  3. 字符串合并STRING_AGG(s.skills, ',')是核心函数,它会把每个分组里的所有skills值用逗号连接成一个字符串,正好符合你要的格式。

可选优化:给技能排序

如果希望合并后的技能按字母顺序排列,可以给STRING_AGG加上排序参数:

STRING_AGG(s.skills, ',' ORDER BY s.skills) AS skills

查询结果示例

fullnameemailskills
abca@a.comwriter,blogger
defb@b.comsinger

内容的提问来源于stack exchange,提问作者abcd gef

火山引擎 最新活动