分组
group by 列
如果SQL语句中一旦搭配了分组条件,能展示的信息只有两种
- 分组条件
- 分组函数
先看一下studnet表:
- 查询student表中每一个班级有多少个同学
- 查询student表中男,女同学的人数
- 查询student表中每个年龄层段有多少人
- 查询student表中每一个班级的语文平均分
- 查询student表中每一个班级的语文平均分,并且按照平均分升序排序
对于分组条件+分组函数的查询
- 查询student表中所有男同学,他们都在哪个班级
先进行where
,再进行分组group by
- 查询student表中语文平均成绩高于90分的班级
先分组,再对平均成绩条件筛选
(但是where
比group by
的优先级别高)
所以SQL给我们提供了一个关键字having
,它的用法和where
差不多,但是它的优先级比group by
低
所以,一般group by
和having
搭配使用
- 在查询之前需要先考虑,到底是先分组,还是先筛选条件
如果是先筛选,后分组where
+group by
如果是先分组,再筛选group by
+having
- 在查询的时候一旦分组了,行数会减少
想要展示的信息的个数需要与分组条件的个数一致
嵌套
在一个完整的SQL语句中,嵌套了另一个完整的SQl语句(当涉及到多个不同的表)
嵌套可以将一个查询的结果当作条件,来再次查询(这种用法很常用)
- 查询student表中语文成绩最高分的同学
嵌套可以将一个查询的结果当作一个表格(需要给这张表格取别名),在这张的表格的基础上再次查询
- 查询student表中男同学的sname,ssex,sage,classid
文章来源: https://blog.csdn.net/Zhangguohao666/article/details/91455466