Mysql数据库操作之group_concat用法

阅读717评论0

group_concat是干什么的?

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符 默认,'])

文档定义:返回一个字符串结果,该结果由分组中的值连接组合而成。

这个,,有点抽象,举个栗子

数据表demo数据结构

+------+------+ 

| classId| name | number

+------+------+ 

|1 | a | 101 |

|1 | b | 102 |

|1 | b | 103 |

|2 | c | 201 |

|3 | d | 301 |

|3 | e | 302 |

+------+------+


1、以classId分组,将name字段数据打印在一行

执行S QL:

s elect classId,group_concat(name) from demo group by classId;

执行结果:

+------+--------------------+ 

| classId| group_concat(name) | 

+------+--------------------+ 

|1 | a,b,b | 

|2 | c | 

|3 | d,e | 

+------+--------------------+


2、以classId分组,将name字段数据打印在一行,并用“;”隔开

执行S QL:

s elect classId,group_concat(name separator ';') from demo group by classId;

执行结果:

+------+--------------------+ 

| classId| group_concat(name separator ';') | 

+------+--------------------+ 

|1 | a;b;b | 

|2 | c | 

|3 | d;e | 

+------+--------------------+


3、以classId分组,将name字段去重复的数据打印在一行

执行S QL:

s elect classId,group_concat(distinct name) from demo group by classId;

执行结果:

+------+--------------------+ 

| classId| group_concat(distinct name) | 

+------+--------------------+ 

|1 | a,b | 

|2 | c | 

|3 | d,e | 

+------+--------------------+


4、以classId分组,将name字段数据打印在一行,并且name字段数据倒序

执行S QL:

s elect classId,group_concat(name order by name desc) from demo group by classId;

执行结果:

+------+--------------------+ 

| classId| group_concat(name order by name desc) | 

+------+--------------------+ 

|1 | b,b,a | 

|2 | c | 

|3 | e,d | 

+------+--------------------+


5、以classId分组,将name字段数据和number字段数据用“-”连接并打印在一行

执行S QL:

s elect classId,group_concat(name, '-', number) from demo group by classId;

执行结果:

+------+--------------------+ 

| classId| group_concat(name, '-', number) | 

+------+--------------------+ 

|1 | a-101,b-102,b-103 | 

|2 | c-201 | 

|3 | d-301,e-302 | 

+------+--------------------+


0 位网友评论:

欢迎来评论

请填写验证码