Mysql数据库操作之group_concat用法
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 位网友评论: