group_concat将一列多行串联成一行
侧边栏壁纸
  • 累计撰写 187 篇文章
  • 累计收到 24 条评论

group_concat将一列多行串联成一行

五好
2018-10-30 / 0 评论 / 820 阅读 / 正在检测是否收录...

应用场景:
select id,title from book where id>1;#如果有多条数据执行后 会是返回多条(行)数据的
id title
1 小学语文
2 小学数学
3 小学自然
4 中学语文

如果我只需要返回一行,其中包含了所有的id...
这里可以用一下group_concat 这个函数了
用法

GROUP_CONCAT([DISTINCT] expr [,expr ...]
             [ORDER BY {unsigned_integer | col_name | expr}
                 [ASC | DESC] [,col_name ...]]
             [SEPARATOR str_val])

返回一个连接的字符串
组中值之间的默认分隔符是逗号(,)
如果需要返回的结果是 2,3,4
则可以运用下面的查询语句来查询

select group_concat(id) ids from book where id>1;#结果将会把id用逗号串联成一行2,3,4
select group_concat(id separator '-') ids from book where id>1;#结果 2-3-4

实例1:
将不同分值段的数据分批找出来:

case: SELECT objid FROM SCOTT.SCORES WHERE subject = 1 AND score IN (90,91,92,93,94,95) 

我们的策略:把满足条件的做标记,然后再通过对应的标记做分组

参考语句:select fz,group_concat(objid) from ( select  objid,if(score>=90,1,if(score>=60,2,if(score<60,3,0)))fz from SCOTT.SCORES )tmp group by fz

详情参考https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_group-concat

0

评论 (0)

取消