MySQL SELECT 语句,允许使用 GROUP BY 子句,将结果集中的数据行根据选择列的值进行逻辑分组,以便能汇总表内容的子集,实现对每个组而不是对整个结果集进行整合。

语法格式如下:

GROUP BY { <列名> | <表达式> | <位置> } [ASC | DESC]

语法说明如下:

 <列名>:指定用于分组的列。可以指定多个列,彼此间用逗号分隔。<表达式>:指定用于分组的表达式。通常与聚合函数一块使用,例如可将表达式 COUNT(*)AS' 人数 ' 作为 SELECT 选择列表清单的一项。<位置>:指定用于分组的选择列在 SELECT 语句结果集中的位置,通常是一个正整数。例如,GROUP BY 2 表示根据 SELECT 语句列清单上的第 2 列的值进行逻辑分组。ASC|DESC:关键字 ASC 表示按升序分组,关键字 DESC 表示按降序分组,其中 ASC 为默认值,注意这两个关键字必须位于对应的列名、表达式、列的位置之后。

注意:GROUP BY 子句中的各选择列必须也是 SELECT 语句的选择列清单中的一项。

对于 GROUP BY 子句的使用,需要注意以下几点。

 GROUP BY 子句可以包含任意数目的列,使其可以对分组进行嵌套,为数据分组提供更加细致的控制。GROUP BY 子句列出的每个列都必须是检索列或有效的表达式,但不能是聚合函数。若在 SELECT 语句中使用表达式,则必须在 GROUP BY 子句中指定相同的表达式。除聚合函数之外,SELECT 语句中的每个列都必须在 GROUP BY 子句中给出。若用于分组的列中包含有 NULL 值,则 NULL 将作为一个单独的分组返回;若该列中存在多个 NULL 值,则将这些 NULL 值所在的行分为一组。

根据 dept_id 对 tb_students_info 表中的数据进行分组,将每个学院的学生姓名显示出来,输入的SQL语句和执行结果如下所示。

mysql> SELECT dept_id,GROUP_CONCAT(name) AS names-> FROM tb_students_info-> GROUP BY dept_id;
+---------+---------------+
| dept_id | names         |
+---------+---------------+
|       1 | Dany,Jane,Jim |
|       2 | Henry,John    |
|       3 | Green,Thomas  |
|       4 | Susan,Tom     |
|       6 | Lily          |
+---------+---------------+
5 rows in set (0.02 sec)

由运行结果可以看出,根据 dept_id 的不同分别统计了 dept_id 相同的姓名。

MySQL 分组查询相关推荐

  1. mysql分组查询和分组过滤

    mysql分组查询使用的的关键字是group by,分组过滤使用到的关键字是having.需要先分组查询才能进行分组过滤,个人理解having和where的区别有以下: 1.聚集函数count.sum ...

  2. mysql 分组查询最新

    mysql分组查询最新 看到网上说到的方法和我写的都一样,也不知道有没有更好的方法,等到解答. SELECT id,group_id from (SELECT id,group_id from tab ...

  3. Mysql分组查询每组最新的一条数据(三种实现方法)

    MySQL分组查询每组最新的一条数据 前言 注意事项 准备SQL 错误查询 错误原因 方法一 方法二(适用于自增ID和创建时间排序一致) 方法三(适用于自增ID和创建时间排序一致) 总结 MAX()函 ...

  4. MySQL分组查询,获取分组后数据

    MySQL分组查询,获取分组后数据 MySQL分组查询,将其它列的数据,合并到一行展示,可以设置去重,设置去重,设置排序,截取指定条数 创建表结构 CREATE TABLE `author_info` ...

  5. MySQL分组查询跟聚合函数

    MySQL分组查询跟聚合函数 一.分组查询的语句 GROUP BY { <列名> | <表达式> | <位置> } [ASC | DESC] 这个语句中间{ < ...

  6. mysql分组查询只获取第一条

    mysql分组查询只获取第一条 接到一个需求: 需要获取协议表里所有供应商对应最新的采购员. 由于协议表里供应商的协议会有多个,可能采购员也不是同一个,所以需要做到聚合.筛选才能达到效果. -- 外层 ...

  7. mysql 分组查询例子_分组查询GROUP BY用法例子详解

    GROUP BY在mysql中是分组查询了,那么你对于GROUP BY有了解多少呢,下面我们来看一篇关于GROUP BY使用例子,具体的细节如下所示. 在SQL中使用GROUP BY来对SELECT的 ...

  8. mysql分组查询 having,MYSQL-分组查询-where和having的区别

    -- DQL查询操作 -- 查询全部字段 select * from 表名; -- 按照条件查询全部字段 select * from 表名 where 筛选条件 -- 查询指定字段的数据 select ...

  9. java中mysql分组查询_ES对应mysql的group by分组查询javaApi,多对多关系的分组查询...

    ES对应mysql的group by分组查询javaApi,多对多关系的分组查询 比如我这边有个下列订单索引数据,现在的需求是按用户(fmerchantId)和支付方式(fchannelId)进行分组 ...

  10. MySQL分组查询最新的一条记录

    问题描述 使用关键字 group by,和order by,但是直接在查询语句后跟上group和order会失效 举例说明:table表中的每个code最新的一条数据 失效写法: SELECT t.` ...

最新文章

  1. NuGet学习笔记(1) 初识NuGet及快速安装使用
  2. CSS媒体查询 @media
  3. 【转】Win7、Ubuntu双系统正确卸载Ubuntu系统--不错
  4. hexo安装toc插件
  5. 在C#中如何定义一个变长的结构数组?如果定义好了,如何获得当前数组的长度?...
  6. 使用git向码云上提交代码
  7. jbpm6.5 环境搭建(三) 数据库 切换
  8. c语言单选题大全,C语言单选题(五)
  9. mysql select in 不存在返回0_MySQL索引优化看这篇文章就够了!
  10. Mysql不能远程连接的解决方法
  11. android开发app初始化,Android 的 Application 初始化
  12. python和c语言的区别-c语言和python的区别是什么
  13. 没有文化可以学php吗,宋威龙深夜发文感慨,却被吐槽文化低,学历真的重要吗?...
  14. 【模电】0010 正弦波产生电路(RC正弦波振荡电路)
  15. 使用python turtle库13行代码实现奥运五环
  16. ARMV8体系结构简介:AArch64系统级体系结构之Self-hosted debug
  17. 信息传播( information diffusion )
  18. Zuul(一)网关和路由
  19. Flutter 使用Texture实现Windows渲染视频
  20. html转成cshtml通用篇

热门文章

  1. mysql链式复制_MySQL主从服务器链式复制配置(ubuntu)
  2. 如何打开Cookies网页
  3. Win11系统如何刷新按钮
  4. 关于java中线程yield()方法问题
  5. WebMvcConfigurerAdapter过时的替换方法
  6. perclos嘴巴_一种基于视频分析的疲劳状态检测方法及装置与流程
  7. linux怎么重装ssh服务器,Linux平台下安装SSH
  8. 简述python爬虫_python爬虫入门篇了解
  9. python创建多线程_初学者看过来:Python中多线程和多处理的指南
  10. 切割 字符串_web前端如何使用字符串