gpt4 book ai didi

mysql - 如何通过查询在mysql中并排获取列中用逗号(,)分隔的所有枚举字段

转载 作者:行者123 更新时间:2023-11-29 05:32:42 27 4
gpt4 key购买 nike

在 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_CONCAT() 聚合函数执行您想要的操作:

SELECT personid, GROUP_CONCAT(color) colors
FROM tabex
GROUP BY personid

这适用于任何类型的字段,而不仅仅是 ENUM。

关于mysql - 如何通过查询在mysql中并排获取列中用逗号(,)分隔的所有枚举字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13393328/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com