mysql 结果集去重复值并合并成一行

MySQL中group_concat函数

完整的语法如下:

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])

基本查询
 

1select * from student;

01+——+——+
02| id| name |
03+——+——+
04|1 | 10|
05|1 | 20|
06|1 | 20|
07|2 | 20|
08|3 | 200 |
09|3 | 500 |
10+——+——+
116 rows in set (0.00 sec)

以id分组,把name字段的值打印在一行,逗号分隔(默认)
1select id,group_concat(name) from student group by id;

1+——+——————–+
2| id| group_concat(name) |
3+——+——————–+
4|1 | 10,20,20|
5|2 | 20 |
6|3 | 200,500|
7+——+——————–+
83 rows in set (0.00 sec)

以id分组,把name字段的值打印在一行,分号分隔
1select id,group_concat(name separator ’;’) from aa group by id;

1+——+———————————-+
2| id| group_concat(name separator ‘;’) |
3+——+———————————-+
4|1 | 10;20;20 |
5|2 | 20|
6|3 | 200;500 |
7+——+———————————-+
83 rows in set (0.00 sec)

以id分组,把去冗余的name字段的值打印在一行,逗号分隔
1select id,group_concat(distinct name) from aa group by id;

1+——+—————————–+
2| id| group_concat(distinct name) |
3+——+—————————–+
4|1 | 10,20|
5|2 | 20 |
6|3 | 200,500 |
7+——+—————————–+
83 rows in set (0.00 sec)

以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序
1select id,group_concat(name order by name desc) from aa group by id;

1+——+—————————————+
2| id| group_concat(name order by name desc) |
3+——+—————————————+
4|1 | 20,20,10 |
5|2 | 20|
6|3 | 500,200|
7+——+—————————————+
83 rows in set (0.00 sec)


转载自 https://blog.csdn.net/HibonLi/article/details/72897486

您可能还会对下面的文章感兴趣: