前言
分组查询和分页查询也是开发中用到的对数据库表的查询操作。下述代码都是通过stu表,内容如下图:
一、分组查询
1.查询男同学和女同学各自的数学平均分
SELECT sex,AVG(math) FROM stu GROUP BY sex;
运行结果:
2.查询男同学和女同学各自的数学平均分,以及各自人数
SELECT sex,AVG(math),COUNT(*) FROM stu GROUP BY sex;
运行结果:
注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
3.查询男同学和女同学各自的数学平均分,以及各自人数(要求:分数低于70分的不参与分组)
SELECT sex,AVG(math),COUNT(*) FROM stu WHERE math>60 GROUP BY sex;
运行结果:
注意:条件必须写在分组前
4.查询男同学和女同学各自的数学平均分,以及各自人数(要求:分数低于70分的不参与分组,分组之后人数大于等于2)
SELECT sex,AVG(math),COUNT(*) FROM stu WHERE math>60 GROUP BY sex HAVING COUNT(*)>=2;
运行结果:
WHERE 和 HAVING区别
1.执行时机不一样:where 分组前限定查询数据,having 分组后过滤数据
2.可判断条件不一样:where不能对聚合函数进行判断,having 可以。
执行顺序: where>聚合函数>having
二、分页查询
1. 每页显示2条数据,查询第1页数据
SELECT * FROM stu LIMIT 0,2;
运行结果:
2..每页显示2条数据,查询第2页数据
SELECT * FROM stu LIMIT 2,2;
运行结果:
3.每页显示2条数据,查询第3页数据
SELECT * FROM stu LIMIT 4,2;
运行结果:
不难看出起始索引的规律如下:
起始索引计算公式=(当前页码-1)*每页显示条数
等实际开发时会用到,当前端点击某个页码时在数据库中调用这条语句把起始索引值传进去进行查询相应页的数据在穿给前端进行展示。
总结
分组查询GROUP BY 分页查询LIMIT(开始索引 查询条目数)。起始索引公式计较重要,也比较好记,最好记住。分组一般是统计数据时会用到。