分组时遇见集合处理

group by + group_concat()

1.group_concat(字段名)可以作为一个输出的字段来使用

2.表示分组之后,根据分组结果,使用group_concat()来放置每一组的某字段的值的集合

列出一些数据

select * from user GROUP BY sex

 

根据sex字段来分组,sex字段的值只有两个值(男、女),所以分为两组

当group by  单独使用时,只显示出每组的第一条记录

所以group by 单独使用时的实际意义并不大

 

 select sex,GROUP_CONCAT(name) from user GROUP BY sex

 

group by + with rollup

1.with rollup 的作用是:在最后新增一行,来记录当前列里所有记录的总和

select sex,count(age) from user GROUP BY sex with rollup

 

 

以上为一星期前所写

今天想到一个取group_concat之中的一个第一个(即第一个逗号前的进行截取)

 

只需要在你的group_concat() 语句前加substring_index(group_concat(),',',1)

 

同样还可把“,”换成“;”   需要在group_concat()语句中加入group_concat(字段名 SEPARATOR ';'  字段名后加入一个空格

 

同样还可以排序group_concat(字段名 order by 字段 asc,字段 desc) 

 

posted @ 2019-01-14 16:12  ^_^达❤令  阅读(291)  评论(0编辑  收藏  举报