【MySQL】分组+嵌套

匿名 (未验证) 提交于 2019-12-02 22:02:20


分组

group by 列 

如果SQL语句中一旦搭配了分组条件,能展示的信息只有两种

  1. 分组条件
  2. 分组函数

先看一下studnet表:

  1. 查询student表中每一个班级有多少个同学

  1. 查询student表中男,女同学的人数

  1. 查询student表中每个年龄层段有多少人

  1. 查询student表中每一个班级的语文平均分

  1. 查询student表中每一个班级的语文平均分,并且按照平均分升序排序


对于分组条件+分组函数的查询

  1. 查询student表中所有男同学,他们都在哪个班级

先进行where,再进行分组group by

  1. 查询student表中语文平均成绩高于90分的班级

先分组,再对平均成绩条件筛选
但是wheregroup by的优先级别高

所以SQL给我们提供了一个关键字having,它的用法和where差不多,但是它的优先级比group by

所以,一般group byhaving搭配使用

  • 在查询之前需要先考虑,到底是先分组,还是先筛选条件
    如果是先筛选,后分组where+group by
    如果是先分组,再筛选group by+having
  • 在查询的时候一旦分组了,行数会减少
    想要展示的信息的个数需要与分组条件的个数一致

嵌套

在一个完整的SQL语句中,嵌套了另一个完整的SQl语句(当涉及到多个不同的表)

嵌套可以将一个查询的结果当作条件,来再次查询(这种用法很常用)

  1. 查询student表中语文成绩最高分的同学


嵌套可以将一个查询的结果当作一个表格(需要给这张表格取别名),在这张的表格的基础上再次查询
  1. 查询student表中男同学的sname,ssex,sage,classid

文章来源: https://blog.csdn.net/Zhangguohao666/article/details/91455466
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!