group_concat函数应用及不同用法

group_concat函数概念

group_concat 是 MySQL 中的一个非常有用的聚合函数,它可以将来自多个记录行的列值连接成一个字符串结果。这个函数特别适用于需要将多行数据合并为单个字符串值的场景,例如,将某个分类下的所有产品名称合并成一个由逗号分隔的字符串。

 

创建数据:

Create table If Not Exists aaa (id int, name varchar(30));
Truncate table aaa;
insert into aaa (id, name) values ( '1', 'A');
insert into aaa (id, name) values ( '1', 'A');
insert into aaa (id, name) values ( '1', 'A');
insert into aaa (id, name) values ( '1', 'B');
insert into aaa (id, name) values ( '1', 'D');
insert into aaa (id, name) values ( '1', 'C');
insert into aaa (id, name) values ( '2', 'A');
insert into aaa (id, name) values ( '2', 'C');
insert into aaa (id, name) values ( '2', 'C');
insert into aaa (id, name) values ( '2', 'C');
insert into aaa (id, name) values ( '2', 'D');
insert into aaa (id, name) values ( '3', 'A');
insert into aaa (id, name) values ( '3', 'B');
insert into aaa (id, name) values ( '3', 'B');
insert into aaa (id, name) values ( '3', 'B');
insert into aaa (id, name) values ( '3', 'D');
insert into aaa (id, name) values ( '4', 'B');
insert into aaa (id, name) values ( '4', 'C');
insert into aaa (id, name) values ( '4', 'E');

函数用法

-- 常用用法
group_concat( distinct 需要合并的字段 order by 排序字段  separator ‘指定分隔符(默认为逗号',')’)

1.根据id 分组 使name字段 在一列显示 默认逗号分隔

select id,group_concat(name) from aaa group by id;

2.根据id 分组 使name字段 在一列显示 指定分隔符','分隔

select id,group_concat(name separator ';') from aaa group by id;

3.根据id 分组 使name字段 在一列显示 默认分隔符 去重

select id,group_concat(distinct name) from aaa  group by id;

4.根据id 分组 使name字段 在一列显示 默认分隔符 按name 排序

select id,group_concat(name order by name) from aaa group by id;

特殊用法

1.查询 每个id中 是否存在 我们需要的 name

group_concat为聚合函数,所以我们可以在having 对其进行判断

源数据:

例:查询那些id中含有 A B D

select id
from aaa
group by id
having group_concat(distinct name) like '%A%'
   and group_concat(distinct name) like '%B%'
   and group_concat(distinct name) like '%D%';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值