0
我正在使用表格。为了说明问题:MySQL加入,包括来自返回分隔值的所有值
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)
正如你所看到的,我有一个用户表和一个组表。在用户表内是一个'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 |
+----+------------------------+--------------------------------------+------+-------------------------------+
你认为这是可能的,如果是这样,没有任何人有任何提示/我的解决方案?
非常感谢, 瑞奇
我似乎无法让它以这种方式工作。在这种情况下,group_concat似乎要做的就是返回每个用户的所有组标签(就好像每个用户在selected_groups字段中都有1 \ r2 \ r3 \ r一样)。 – 2011-02-26 14:33:58
奇怪,它应该工作......我在接下来的几个小时内没有访问过mysql服务器,但我稍后会检查。 – krtek 2011-02-26 16:30:51