06:MySQL分组查询子查询笔记6

本篇大纲:

数据分组操作

过滤分组

分组结果排序

select语句中字句的执行顺序

子查询

01:查询结果的分组操作

  • 分组允许把数据分为多个组,以便能对每个组进行聚集计算
  • 分组是在select语句的group by子句中建立的
  • 注意:group by 只是创建分组,但并不保证分组里面的数据的排序顺序,需要使用order by子句对分组里面的数据进行排序

02:分组操作实例

  • 使用group by语句对select查询的结果进行分组,以便统计

image.png

  1. select语句指定了两个列,vend_id 包含产品供应商的ID,num_prods为计算字段(使用count()函数)
  2. group by子句按vend_id 排序并分组数据,这导致对每个vend_id 而不是整个表计算

num_prods一次,从而按照vend_id为单位,来计算每个组的总和

注意:group by子句必须出现在where子句之后,order by子句之前

03:过滤分组

  • 除了能用group by 分组数据外,MySQL还允许对分组指定条件,规定包含哪些分组,排除哪些分组
  • MySQL使用having子句来完成该操作
  • where子句过滤指定的行,having子句过滤指定的分组

过滤分组实例一

过滤总数大于等于2的分组

image.png

过滤分组实例二

  • where与having同时使用,列出具有2个(含)以上,价格为10(含)以上的产品供应商

image.png

04:SELECT中子句的顺序

  • select语句中使用的子句必须按照一定的次序,下图列出来各个子句在select语句中出现的次数

image.png

05:子查询

  • 子查询是嵌套在其他查询中的查询
  • 子查询实例(业务需求)

image.png

  • 上述每个步骤都可以单独作为一个查询来执行,可以把一条select语句返回的结果用于另一条select语句的

where子句中

  1. 查找包含物品TNT2的所有订单的编号

image.png

2.查找前一步骤出的订单编号的所有客户ID

image.png

3.使用子查询语句完成

image.png

原文地址:https://www.cnblogs.com/kelly11/p/13188853.html