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服务器,但稍后我会检查。