zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

mysql groupby 字段合并问题(group_concat)详解数据库

mysql数据库 问题 详解 合并 group CONCAT GroupBy
2023-06-13 09:20:08 时间

  在我们的日常mysql查询中,我们可能会遇到这样的情况:

对表中的所有记录进行分类,并且我需要得到每个分类中某个字段的全部成员。

上面的话,大家看起来可能不太好懂,下面举一个例子来给大家说明。

现在我们有一张表,结构如下:

mysql groupby 字段合并问题(group_concat)详解数据库

 

  现在我们向这张表中插入一些数据。

insert into test_group_concat values(default,1, ppaa ,1594802453,0),(default,1, llcc ,1594802453,0),(default,2, uupp ,1594802453,0),(default,2, ttww ,1594802453,0)

现在我们可以看到,数据表的情况如下:

mysql groupby 字段合并问题(group_concat)详解数据库

 

  我的需要是这样的:我需要对type_id进行分组,而且每个分组下的所有name我都要得到,这个是后应该怎么办呢?

这样写:select type_id,name from test_group_concat GROUP BY type_id

我们得到的结果是这样的:

mysql groupby 字段合并问题(group_concat)详解数据库

 

  上面每个type_id对应只有一个name,这显然不符合我们的需求,我们的需求是需要找出type_id = 1 这个分类下所有的name,和type_id = 2的所有的name。

怎么办呢?

有朋友会想到,“用concat就可以解决问题了嘛!”,好的,我们现在试一下。

select type_id,concat(name) as names from test_group_concat GROUP BY type_id

结果如下:

mysql groupby 字段合并问题(group_concat)详解数据库

 

  很显然,没有达到我们的预期,怎么办!!!

mysql中给我们提供了一个函数:group_concat,利用这个函数,我们就能够很好的解决上述问题。我们试一下。

select type_id,group_concat(name) as names from test_group_concat GROUP BY type_id

结果如下:

mysql groupby 字段合并问题(group_concat)详解数据库

 

上述结果,很好的满足了我们的需求。

那有朋友就会问了,如果我不仅想知道分类某个字段的全部信息,我还想要某两个字段连接在一起的所有信息,我们可以这么去写。

select type_id,group_concat(id, , ,name) as names from test_group_concat GROUP BY type_id

mysql groupby 字段合并问题(group_concat)详解数据库

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/3827.html

mysql