7

问题:我有一个按预期工作的 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 |
+----------+---------+

*users_roles 表:*

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

角色表:

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

1 回答 1

22

尝试以下查询

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
于 2012-04-10T06:56:16.283 回答