mysql去重合并字符串,SQL编程:group by合并结果字符串 --- group_concat函数就能行...
1、表結構
create table tt(id int,v varchar(30));
insert into tt values(1,'a'),(1,'b'),(2,'b'),(2,'c'),(2,'b'),(2,'a'),(3,'a');
mysql> select * from tt;
+------+------+
| id | v |
+------+------+
| 1 | a |
| 1 | b |
| 2 | b |
| 2 | c |
| 2 | b |
| 2 | a |
| 3 | a |
+------+------+
7 rows in set (0.05 sec)
2、問題
一般在合并字符串我們可以用concat,但是這個函數主要實現類似字符串相加的目的,而且是同一行中的字符串的合并。
如果現在要實現把不同行的字符串進行合并,要如何實現呢?
3、解決方法:
完全合并
mysql> select group_concat(v) from tt;
+-----------------+
| group_concat(v) |
+-----------------+
| a,b,b,c,b,a,a |
+-----------------+
1 row in set (0.05 sec)
分組合并
mysql> select id,group_concat(v) from tt group by id;
+------+-----------------+
| id | group_concat(v) |
+------+-----------------+
| 1 | a,b |
| 2 | b,c,b,a |
| 3 | a |
+------+-----------------+
3 rows in set (0.01 sec)
分組、去重合并
mysql> select id,group_concat(distinct v) from tt group by id;
+------+--------------------------+
| id | group_concat(distinct v) |
+------+--------------------------+
| 1 | a,b |
| 2 | b,c,a |
| 3 | a |
+------+--------------------------+
3 rows in set (0.03 sec)
分組、去重、排序合并
mysql> select id,group_concat(distinct v order by v) from tt group by id;
+------+-------------------------------------+
| id | group_concat(distinct v order by v) |
+------+-------------------------------------+
| 1 | a,b |
| 2 | a,b,c |
| 3 | a |
+------+-------------------------------------+
3 rows in set (0.00 sec)
自定義連接符
mysql> select id,group_concat(v separator ';') from tt group by id;
+------+-------------------------------+
| id | group_concat(v separator ';') |
+------+-------------------------------+
| 1 | a;b |
| 2 | b;c;b;a |
| 3 | a |
+------+-------------------------------+
3 rows in set (0.01 sec)
---------------------
總結
以上是生活随笔為你收集整理的mysql去重合并字符串,SQL编程:group by合并结果字符串 --- group_concat函数就能行...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 命令 不对齐,MySQL中自
- 下一篇: 安卓系统PHP MYSQL服务器,安卓手