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

MySQL中INNER JOIN查询时如何合并同ID角色并实现ID去重

解决方案:合并同一用户的多个角色名称

在MySQL中,你可以使用GROUP_CONCAT()聚合函数配合GROUP BY实现用户ID唯一,并将同一用户的多个角色名称合并到单个字段中。修改后的查询语句如下:

SELECT users.id, GROUP_CONCAT(roles.name SEPARATOR ', ') AS Name
FROM users_roles 
INNER JOIN users ON users.id = users_roles.user_id
INNER JOIN roles ON roles.id = users_roles.role_id
GROUP BY users.id

关键说明:

  • GROUP BY users.id:按用户ID分组,确保每个用户仅返回一行结果
  • GROUP_CONCAT(roles.name SEPARATOR ', '):将分组内的所有角色名称用逗号加空格拼接成字符串,SEPARATOR可自定义分隔符,默认值为逗号,显式指定更直观

执行结果:

+---------+--------------+
| ID      | Name         | 
+---------+--------------+
| 1       | Student      | 
| 2       | Admin, LBC   | 
| 3       | LBC          | 
| 4       | Examinator   |
| 5       | PO           | 
+---------+--------------+

原查询中的DISTINCT无法满足需求,因为它仅去除完全重复的行,但同一用户不同角色的行属于不同记录,因此仍会返回多行。通过分组+聚合函数的方式,才能真正实现用户ID唯一并合并角色的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:02:11