首页 > 其他分享 >group_concat用法详解

group_concat用法详解

时间:2022-09-04 12:23:21浏览次数:67  
标签:group score 王老师 详解 70 90 concat

group_concat函数常用于select 语句中,下面我们通过一张表来讲解group_concat函数的用法。

首先来看下初始的select函数:

select * from exam;

上述sql执行结果为:

|id    |subject |student|teacher|score|
---------------------------------------
|1	   |数学    |小红	|王老师	|80   |
|2	   |数学    |小李	|王老师	|80   |
|3	   |数学    |小王	|王老师	|70   |
|4	   |数学    |小张	|王老师	|90   |
|5	   |数学    |小赵	|王老师	|70   |
|6	   |数学    |小孙	|王老师	|80   |
|7	   |数学    |小钱	|王老师	|90   |
|8	   |数学    |小高	|王老师	|70   |
|9	   |数学    |小秦	|王老师	|80   |
|10	   |数学    |小马	|王老师	|90   |
|11	   |数学    |小朱	|王老师	|90   |
|12	   |语文    |小高	|李老师	|70   |
|15	   |语文    |小秦	|李老师	|70   |
|18	   |语文    |小马	|李老师	|80   |
|21	   |语文    |小朱	|李老师	|90   |
|24	   |语文    |小钱	|李老师	|90   |

​ 如果我们希望按分数score进行分组,并将分组后的学生姓名打印下来,就可以用group_concat实现。执行sql:

select score,group_concat(student) from exam group by score;

执行结果为:

|score |group_concat(student)		|
-------------------------------------
|70	   |小王,小赵,小高,小高,小秦		|
|80	   |小红,小李,小孙,小秦,小马		|
|90	   |小张,小钱,小马,小朱,小朱,小钱	|

​ 不难看出,在70分这一行有两条小高的记录,90分这一行有两条小钱和小朱的记录,如果我们需要去重,则需要给函数中加一个distinct参数:

select score,group_concat(distinct student) from exam group by score;

执行结果为:

|score |group_concat(student)	|
---------------------------------
|70	   |小王,小赵,小高,小秦		|
|80	   |小红,小李,小孙,小秦,小马	|
|90	   |小张,小钱,小马,小朱		|

​ 这样group_concat每行数据的结果中就没有了重复值,但是在数据中的分隔符为默认的逗号',',如果想修改默认的分隔符,只需要在上述指令中稍作修改:

select score,group_concat(distinct student separator '%') from exam group by score;

​ 执行结果:

|score |group_concat(student)	|
---------------------------------
|70	   |小王%小秦%小赵%小高		|
|80	   |小孙%小李%小秦%小红%小马	|
|90	   |小张%小朱%小钱%小马		|

标签:group,score,王老师,详解,70,90,concat
From: https://www.cnblogs.com/javaxubo/p/16654826.html

相关文章

  • Java实现Excel导入导出操作详解
    前言本次封装是基于POI的二次开发,最终使用只需要调用一个工具类中的方法,就能满足业务中绝大部门的导入和导出需求。1.功能测试1.1测试准备在做测试前,我们需要將【2......
  • Python内置函数-isinstance() 函数详解
    描述isinstance()函数来判断一个对象是否是一个已知的类型,类似type()。isinstance()与type()区别:type()不会认为子类是一种父类类型,不考虑继承关系。is......
  • DispatcherServlet初始化顺序详解
    1. Web容器启动时将调用HttpServletBean的init方法publicabstractclassHttpServletBeanextendsHttpServletimplementsEnvironmentAware{@Overridepubli......
  • Spark中的Spark Shuffle详解[转]
    Shuffle简介Shuffle描述着数据从maptask输出到reducetask输入的这段过程。shuffle是连接Map和Reduce之间的桥梁,Map的输出要用到Reduce中必须经过shuffle这个环节,shuffle......
  • Java Script面向对象详解(一`)
    JavaScript面向对象详解(一)ES6之前的JavaScript面向对象比较不好理解,涉及到很多知识和思想。ES6增加了class和extends来实现类的封装和继承,但是通过babel转换成ES5之后......
  • python3之35个关键字详解
    一、python35个关键字列举:help("keywords")查看运行结果:1.and、or、not2.if、elif、else3.for、while4.True、False5.continue、break6.pass7.try、except、f......
  • JavaScript详解(一)
    回顾前端三要素HTML(结构):超文本标记语言(HyperTextMarkupLanguage)决定网页结构和内容CSS(表现):层叠样式表(CascadingStyleSheets),设定网页的表现形式JavaScript(行......
  • JavaScript详解(二)
    面向对象原型对象类模板原型对象对象具体的实例原型varStudent={name:"xiaoqiang",age:3,run:functio......
  • Linux下用户组、文件权限详解
    Linux下用户组、文件权限详解-打伞的鱼-博客园 https://www.cnblogs.com/123-/p/4189072.html用户组在linux中的每个用户必须属于一个组,不能独立于组外。在linux中......
  • 系统优化-----sysctl.conf文件内核设置参数详解
    系统优化-----sysctl.conf文件内核设置参数详解_tallercc的博客-CSDN博客 https://blog.csdn.net/tallercc/article/details/52823075sysctl.conf工作原理 sysctl命......