mysql - 向 mySQL GROUP_CONCAT 语句添加内部连接

标签 mysql group-concat

问题:我有一个按预期工作的 GROUP_CONCAT 查询,除了我想让 concat 成为一个合并的答案,而不是原始 ID 字段。

当前查询:

SELECT user.user_id, user.user, GROUP_CONCAT(user_roles.roleID separator ', ') roles
FROM user
JOIN user_roles ON user.user_ID = user_roles.user_ID
GROUP BY users.user_ID, users.user

给出结果:

+----------+---------+----------------------------+
|  user_ID | user    |   roles                    |
+----------+---------+----------------------------+
|        1 |   Smith |    1, 3                    |
+----------+---------+----------------------------+
|        2 |   Jones |    1, 2, 3                 |
+----------+---------+----------------------------+

期望的结果:

+----------+---------+----------------------------+
|  user_ID | user    |   roles                    |
+----------+---------+----------------------------+
|        1 |   Smith |    Admin, Other            |
+----------+---------+----------------------------+
|        2 |   Jones |    Admin, Staff, Other     |
+----------+---------+----------------------------+

用户表:

+----------+---------+
|  user_ID | user    |
+----------+---------+
|        1 |   Smith |
+----------+---------+
|        2 |   Jones |
+----------+---------+

*用户角色表:*

+----------+---------+
|  user_ID | role_ID |
+----------+---------+
|        1 |   1     |
+----------+---------+
|        2 |   1     |
+----------+---------+
|        2 |   2     |
+----------+---------+
|        2 |   3     |
+----------+---------+
|        1 |   3     |
+----------+---------+

角色表:

+----------+-----------+
|  role_ID | role_name |
+----------+-----------+
|        1 |   Admin   |
+----------+-----------+
|        2 |   Staff   |
+----------+-----------+
|        3 |   Other   |
+----------+-----------+

最佳答案

试试下面的查询

SELECT user.user_id, user.user, GROUP_CONCAT(roles.role_name  separator ', ') roles
FROM user
JOIN user_roles ON user.user_ID = user_roles.user_ID
JOIN roles ON user_roles.role_ID= user_roles.role_ID
GROUP BY users.user_ID, users.user

关于mysql - 向 mySQL GROUP_CONCAT 语句添加内部连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10084352/

相关文章:

mysql查询concat数据成group_concat

mysql - 优化 SQL on MySQL 中的 GROUP_CONCAT

mysql - OS X : Keep commands working in terminal

MySQL 事务死锁,但 SHOW ENGINE INNODB STATUS 不显示真正的死锁

MYSQL:过滤多个日期和日期范围

java - 在服务器上运行我的应用程序时如何避免 max_allowed_pa​​cket 错误?

mysql - 通过外键将值列表放入一列

mysql - 递归表可为空的parent_id

sql:为什么在使用 'GROUP CONCAT' + 'GROUP BY' 时查询重复值?

MySql 连接具有不同行数的多个表