分组查询 group bygroup by 属性名 [having 条件表达式][ with rollup]

“属性名 ”指按照该字段值进行分组;“having 条件表达式 ”用来限制分组后的显示,满足条件的结果将被显示;with rollup 将会在所有记录的最后加上一条记录,该记录是上面所有记录的总和。

1)单独使用

group by 单独使用,查询结果只显示一个分组的一条记录。

实例:

select * from employee group by sex;

将只显示男女两条记录。

2)与group_concat()函数一起使用

每个分组中指定字段值都显示出来

实例:

select sex,group_concat(name) from employee group by sex;

显示结果中“女”会显示所有sex为“女”的名字name

sex | group_concat(name)

女 | 小红,小兰

男 | 张三,王五,王六

3)与集合函数一起使用

实例:

select sex,count(sex) from employee group by sex;

结果:

sex | count(num)

女 | 1

男 | 3

count()为计算个数的方法。

4)与having一起使用

“having条件表达式”,可以限制输出结果。只有满足条件表达式的结果才显示。

实例:

select sex,count(sex) from employee group by sex having count(sex) >= 3;

结果:

sex | count(sex)

男 | 3

“having条件表达式”作用于分组后的记录。

5)按多字段进行分组

select * from employee group by d_id,sex;

查询结果先按d_id分组,再按sex进行分组

6) 与with rollup一起使用

使用with rollup将会在所有记录的最后加上一条记录,这条记录是上面所有记录的总和

实例:

select sex,count(sex) from employee group by sex with rollup;

结果:

sex | count(sex)

女 | 1

男 | 5

null | 6

如果是字符串的话,比如姓名就会生成“张三,李四,王五”这种类型的结果,即name总和。

连接查询将两个及两个以上的表连接起来选取所需数据。

1)内连接查询:

当两个表中具有相同意义的字段值相等时,就查询出该条记录。

实例:

select num,name,employee.d_id,age,d_name from employee,department where employee.d_id = department.d_id

因字段名相同,所以取d_id字段值时最好指定哪张表的字段。

2)外连接查询

select 属性名列表 from 表名1 left|right join 表名2 on 表名1.属性名1=表名2.属性名2;

左连接查询:

进行左连接查询时,可以查出表名1中所指的表中所有记录。而表名2所指表中,只能查询出匹配的记录。

实例:

select num,name,employee.d_id,age,d_name from employee left join department on employee.d_id = department.d_id;

右连接查询:

与左连接相反,可以查询出表名2中的的所有记录,而表名1中所指的表中,只查询出匹配的记录。

ps:使用集合函数查询集合函数包括count(),sum(),avg(),max()和min()。

1)count()函数

统计记录条数

实例:

select count(*) from employee;

与group by一起使用

select d_id,count(*) from employee group by d_id;

上述语句会先分组后统计。

2) sum()函数

sum()函数是求和函数

实例:

select num,sum(score) from grade where num= 1001;

select num,sum(score) from grade group by num;

sum()只能计算数值类型字段。

3)avg()函数

avg()函数是求平均值函数。

实例:

select avg(age) from employee;

select course,avg(score) from group by course;

4)max(),min()函数

求最大值和最小值。

实例:

select max(age) from employee;

select num,course,max(score) from grade group by course;

对于字符串的最大值问题,max()函数是使用字符对应的ascii码进行计算的。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

mysql 分组查询 语句_详解MySQL中的分组查询与连接查询语句相关推荐

  1. mysql通配符escape使用_详解MySQL like如何查询包含'%'的字段(ESCAPE用法)

    在SQl like语句中,比如 SELECT * FROM user WHERE username LIKE '%luchi%' SELECT * FROM user WHERE username L ...

  2. mysql通配符escape使用_详解MySQL like如何查询包含#39;%#39;的字段(ESCAPE用法)-MySQL教程-Web开发者网...

    在SQl like语句中,比如 SELECT * FROM user WHERE username LIKE '%luchi%' SELECT * FROM user WHERE username L ...

  3. mysql 的dcl语句_详解MySQL第三篇—DCL语句

    DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句.这些语句定义了数据库.表.字段.用户的访问权限和安全级别.主要的语句关键字包括 g ...

  4. mysql临键锁_详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)

    详解 MySql InnoDB 中的三种行锁(记录锁.间隙锁与临键锁) 前言 InnoDB 通过 MVCC 和 NEXT-KEY Locks,解决了在可重复读的事务隔离级别下出现幻读的问题.MVCC  ...

  5. mysql mgr 三节点_详解MySQL 5.7 MGR单主确定主节点方法

    我们行MGR年底要上线了,每天都要看官方文档学习,做测试,坚持每天写一个小知识点,有想一起学习的么~ MySQL 5.7 MGR单主确定主节点是哪个,我们可以通过成员ID来判断,然后结合read_on ...

  6. mysql 编辑数据库内容_详解mysql数据库增删改操作

    插入数据 insert into 表名(列名1,列名2,列名3) values(值1,值2,值3); insert into user(user_id,name,age) values(1,'nice ...

  7. mysql执行事务的语句_详解MySQL执行事务的语法和流程

    摘要:MySQL 提供了多种存储引擎来支持事务. MySQL 提供了多种存储引擎来支持事务.支持事务的存储引擎有 InnoDB 和 BDB,其中,InnoDB 存储引擎事务主要通过 UNDO 日志和 ...

  8. mysql操作json优点和缺点_详解Mysql中的JSON系列操作函数

    前言 JSON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似XML,但是比XML简单,易读并且易编写.对机器来说易于解析和生成,并且会减少网络带宽的传输. JSON的格式非常简单:名称/ ...

  9. 操作 mysql 不生成日志_详解MySQL的日志

    MySQL日志 MySQL的日志记录了MySQL的日常操作和错误信息,通过这些日志我们可以知道MySQL内部发生的事情,可以为MySQL的优化和管理提供必要的信息. MySQL的日志主要有:二进制日志 ...

最新文章

  1. 机器学习算法源码全解析(四)-人工神经网络关键核心知识点汇总
  2. IntelliJ IDEA使用说明
  3. @RequestMapping,@ResponseBody,@RequestBody用法
  4. 现代程序设计 (课程设计中, 征求意见稿)
  5. djpython教程_简单介绍Python的Django框架的dj-scaffold项目
  6. 【高校宿舍管理系统】第六章 用户管理和年级管理
  7. express+mongodb制作简单的文章发布系统(一)之环境的搭建
  8. 7-4 散列表查找(PTA程序设计)
  9. 【软件工程】课程设计库存管理系统
  10. python在线评测系统_怎样做一个 Online Judge(在线评测系统)?
  11. lower_bound 、upper_bound 、binary_search
  12. Linux日志切割神器Logrotate的原理和配置详解,建议收藏!!!
  13. 北京思想聚合科技有限公司
  14. Unity3D教程:回合制游戏实现
  15. uni-app开发中的#ifdef MP是什么意思?条件编译
  16. 数据对接利用hutool工具类进行xml解析,xml转换成map,然后进行数据入库
  17. Python课堂笔记之判断一个数组中是否含有数字0
  18. NVIDIA中文车牌识别系列-3:使用TLT训练车牌号识别LPR模型
  19. AXI CDMA Linux user space example on Zynq UltraScale+ RFSoC
  20. 静下心来好好看书,好好学习。

热门文章

  1. Docker加速器的两种方法
  2. 【Sed】使用sed删除文件指定行的内容
  3. 怎么给金蝶kis记账王设置数量金额辅助核算
  4. CSU-1783: 聊天止于呵呵(字符串处理)
  5. Led显示屏是怎样散热的?
  6. 在google浏览器使用ie功能(本人目前win11系统正常使用)
  7. 微信公众平台按钮及菜单创建
  8. 第一版简约资源网织梦cms源码 可做下载站或资源站
  9. 农场工具程序设计(二)
  10. 如何搭建线上商城和线下门店的联合运营解决方案