【MySQL 编程你也行】合并字符串不求人 ---> group_concat函数就能行


1、表结构

点击(此处)折叠或打开

  1. create table tt(id int,v varchar(30));

  2. insert into tt values(1,'a'),(1,'b'),(2,'b'),(2,'c'),(2,'b'),(2,'a'),(3,'a');

点击(此处)折叠或打开

  1. mysql> select * from tt;
  2. +------+------+
  3. | id | v |
  4. +------+------+
  5. | 1 | a |
  6. | 1 | b |
  7. | 2 | b |
  8. | 2 | c |
  9. | 2 | b |
  10. | 2 | a |
  11. | 3 | a |
  12. +------+------+
  13. 7 rows in set (0.05 sec)

2、问题
一般在合并字符串我们可以用concat,但是这个函数主要实现类似字符串相加的目的,而且是同一行中的字符串的合并。
如果现在要实现把不同行的字符串进行合并,要如何实现呢?


3、解决方法:
完全合并

点击(此处)折叠或打开

  1. mysql> select group_concat(v) from tt;
  2. +-----------------+
  3. | group_concat(v) |
  4. +-----------------+
  5. | a,b,b,c,b,a,a |
  6. +-----------------+
  7. 1 row in set (0.05 sec)

分组合并

点击(此处)折叠或打开

  1. mysql> select id,group_concat(v) from tt group by id;
  2. +------+-----------------+
  3. | id | group_concat(v) |
  4. +------+-----------------+
  5. | 1 | a,b |
  6. | 2 | b,c,b,a |
  7. | 3 | a |
  8. +------+-----------------+
  9. 3 rows in set (0.01 sec)

分组、去重合并

点击(此处)折叠或打开

  1. mysql> select id,group_concat(distinct v) from tt group by id;
  2. +------+--------------------------+
  3. | id | group_concat(distinct v) |
  4. +------+--------------------------+
  5. | 1 | a,b |
  6. | 2 | b,c,a |
  7. | 3 | a |
  8. +------+--------------------------+
  9. 3 rows in set (0.03 sec)

分组、去重、排序合并

点击(此处)折叠或打开

  1. mysql> select id,group_concat(distinct v order by v) from tt group by id;
  2. +------+-------------------------------------+
  3. | id | group_concat(distinct v order by v) |
  4. +------+-------------------------------------+
  5. | 1 | a,b |
  6. | 2 | a,b,c |
  7. | 3 | a |
  8. +------+-------------------------------------+
  9. 3 rows in set (0.00 sec)

自定义连接符

点击(此处)折叠或打开

  1. mysql> select id,group_concat(v separator ';') from tt group by id;
  2. +------+-------------------------------+
  3. | id | group_concat(v separator ';') |
  4. +------+-------------------------------+
  5. | 1 | a;b |
  6. | 2 | b;c;b;a |
  7. | 3 | a |
  8. +------+-------------------------------+
  9. 3 rows in set (0.01 sec)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/653220/viewspace-1815322/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/653220/viewspace-1815322/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值