在 mysql 中,当我使用 group by 运行查询时,我需要在列中并排获取枚举字段,如下所示。
有如下表
mysql> describe tabex;
+---------+----------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| personid| int(11) | YES | | NULL | |
| color | enum('red','blue','white') | YES | | NULL | |
+---------+----------------------------+------+-----+---------+----------------+
有不同的衬衫,personid 列描述了那个人的 id,color 表示他的衬衫的颜色。
表中数据如下
mysql> select * from tabex;
+----+----------+-------+
| id | personid | color |
+----+----------+-------+
| 1 | 1 | red |
| 2 | 1 | white |
| 3 | 2 | blue |
| 4 | 2 | red |
+----+----------+-------+
4 rows in set (0.00 sec)
当我运行查询时,我得到这样的结果
mysql> select personid , color from tabex group by personid;
+----------+-------+
| personid | color |
+----------+-------+
| 1 | red |
| 2 | blue |
+----------+-------+
但我想要下面的结果
+----------+-------------+
|personid | color |
+----------+-------------+
|1 | red,white |
|2 | blue,red |
| | |
+----------+-------------+
如何通过使用 group by 和聚合(如果有枚举)来获得上述结果。
就是在这里,我想获得枚举字段的结果,就像我们将通过使用 count 或 sum 函数和 group by 获得的那样。