MySQL连接,包括从返回的所有值

MySQL连接,包括从返回的所有值,mysql,Mysql,我在用桌子工作。为了便于说明: mysql> SELECT users.id, username, REPLACE(selected_groups, '\r', ', '), groups.id, groups.label FROM users LEFT JOIN groups ON users.selected_groups; +----+------------------------+--------------------------------------+------+----

我在用桌子工作。为了便于说明:

mysql> SELECT users.id, username, REPLACE(selected_groups, '\r', ', '), groups.id, groups.label FROM users LEFT JOIN groups ON users.selected_groups;
+----+------------------------+--------------------------------------+------+---------------+
| id | username               | REPLACE(selected_groups, '\r', ', ') | id   | label         |
+----+------------------------+--------------------------------------+------+---------------+
|  7 | Greg                   | 1, 2, 3,                             |    1 | Administrator |
|  7 | Greg                   | 1, 2, 3,                             |    2 | Member        |
|  7 | Greg                   | 1, 2, 3,                             |    3 | Banned        |
|  8 | Steve                  | 1, 2,                                |    1 | Administrator |
|  8 | Steve                  | 1, 2,                                |    2 | Member        |
|  8 | Steve                  | 1, 2,                                |    3 | Banned        |
|  9 | Steve The Banned Admin | 1, 3,                                |    1 | Administrator |
|  9 | Steve The Banned Admin | 1, 3,                                |    2 | Member        |
|  9 | Steve The Banned Admin | 1, 3,                                |    3 | Banned        |
| 10 | Example man            | 1, 2, 3,                             |    1 | Administrator |
| 10 | Example man            | 1, 2, 3,                             |    2 | Member        |
| 10 | Example man            | 1, 2, 3,                             |    3 | Banned        |
+----+------------------------+--------------------------------------+------+---------------+
12 rows in set (0.00 sec)
如您所见,我有一个用户表和一个组表。在users表中有一个“selected_groups”列,其中使用返回分隔值('\r')定义了相关组

问题是我不太确定如何在标签字段中返回每个必需的标签。理想情况下,结果输出如下:

+----+------------------------+--------------------------------------+------+-------------------------------+
| id | username               | REPLACE(selected_groups, '\r', ', ') | id   | groups.label                  |
+----+------------------------+--------------------------------------+------+-------------------------------+
|  7 | Greg                   | 1, 2, 3,                             |    1 | Administrator, Member, Banned |
|  8 | Steve                  | 1, 2,                                |    1 | Administrator, Member         |
|  9 | Steve The Banned Admin | 1, 3,                                |    1 | Administrator, Banned         |
| 10 | Example man            | 1, 2, 3,                             |    1 | Administrator, Member, Banned |
+----+------------------------+--------------------------------------+------+-------------------------------+
你认为这可能吗?如果可能的话,有没有人能给我一些建议/解决方案

非常感谢,, 瑞奇

你应该看看

在用户id和用户名上有一个
groupby
子句,在标签上有一个
groupconcat
子句,它应该可以做到这一点

我的想法是:

SELECT users.id, username, REPLACE(selected_groups, '\r', ', '), GROUP_CONCAT(DISTINCT groups.label)
FROM users 
LEFT JOIN groups ON users.selected_groups;
GROUP BY users.id, username
(这未经测试,因此可能需要进行一些修改)


编辑:我从查询中删除了groups.id,因为它没有任何意义。

我似乎无法让它以这种方式工作。在本例中,group\u concat似乎只返回每个用户的所有组标签(好像每个用户在selected\u groups字段中都有1\r2\r3\r)。奇怪的是,它应该可以工作。。。我在接下来的几个小时内无法访问mysql服务器,但稍后我会检查。