SQL-GROUP_CONCAT拼接字符串

原数据

a  1
a  2
b  5
c  6
b  2

预想效果图

a  1,2
b  5,2
c  6

聚合函数,在group语句中使用,可以将多行的字符串按分组整合成一个字符串

语法:
GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name ...]][SEPARATOR str_val])
假定:有一张表是UserRole存储User对应Role关系,其有两列userId,RoleCode,我们可以通过GROUP_CONCAT来取出用逗号分隔的用户角色

select userId,GROUP_CONCAT(RoleCode SEPARATOR  ',') from UserRole
需要注意,GROUP_CONCAT函数默认的最大可连接字符串的长度是1024,如果连接的字符串长度超过1024的话会被截断,不过我们可以通过设置group_concat_max_len的值来修改GROUP_CONCAT的最大长度。

例如:
SET SESSION group_concat_max_len= 99999;
select userId,GROUP_CONCAT(RoleCode SEPARATOR  ',') from UserRole

实际应用

--单表
select tt.id,GROUP_CONCAT(tt.ROLE_NAME SEPARATOR  ',') as role_name from sys_uer_role tt GROUP BY tt.id

--基于三表联查
select tt.id,GROUP_CONCAT(tt.ROLE_NAME SEPARATOR  ',') as role_name from (select u.id,r.ROLE_NAME 
from sys_user u 
JOIN sys_user_role ur on u.id=ur.user_id 
JOIN sys_role r on ur.ROLE_ID=r.ID)tt
GROUP BY tt.id
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,464评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,818评论 0 10
  • 2017/3/14 RDBMS:关系型数据库管理系统 关系模型独立于语言 SQL有几种不同类型的语言:数据定义语言...
    ancherl阅读 1,658评论 0 6
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4
  • (一) 城市里没有烛光 十一月的寒光来自夜归人的眼睛 用晶亮的眸子 把坚硬的水泥路看透 路边站着两个哨兵一样的 清...
    羽蒙剪烛阅读 435评论 0 4