MySQL排序、分组和分页

MySQL排序和分组使用的命令

排序 order by

一、 order by 单字段

——默认从小到大排序,字段后面隐藏了asc条件,当条件为desc时,按从大到小排序。

示例1:查询年龄在18到34岁之间的男性,按照年龄从小到大排序:

select * from student where (age between 18 and 34) and (gender="男") order by age;

示例2:查询年龄在18到34岁之间的女性,按照身高从高到矮排序:

select * from student where (age betwwen 18 and 34) and (gender="女") order by height desc;

二、 order by 多字段

——字段从左到右权重递减。

示例1:查询年龄在18到34岁之间的女性,按照身高从高到矮排序,如果身高相同则按照年龄从小到大排序:

select * from student where (age betwwen 18 and 34) and (gender="女") order by height desc,age asc;

示例2:按年龄从大到小排序,相同情况下按身高从小到大排序:

select * from student order by age desc,height asc;

分组 group by

一、 聚合函数

——count,总数

示例:查询女性有多少人。

select count(*) from student group where genrer="女";

——max,最大值。

示例:查询男性中最高的身高。

select max(height) from student where gender="男";

——min,最小值。

示例:查询女性中最矮的身高。

select min(height) from student where gender="女";

——sum,求和。

示例:查询男性的身高和。

select sum(height) from student where gender="男";

——avg,平均值。

示例:查询女性的平均年龄。

select avg(age) from student where gender="女";

——round,round(123.45, 1)可保留一位小数且四舍五入。

示例:示例:查询女性的平均年龄并保留两位小数。

select round(avg(age), 2) from student where gender="女";

二、 分组命令 group by

group by一般跟聚合函数配合使用,使得分组后显示的字段对于每个小组是唯一指定的。

示例1:计算每种性别的人数。

select gender,count(*) from student group by gender;

示例2:计算每种性别的平均身高(保留两位小数)。

select gender,round(avg(height), 2) from student group by gender;

——group_concat(字段1,字段2……),将分组中每组的所有对象的某字段显示出来,可以添加其他字符。
示例1:按性别分组将每个性别的人数,人员名称和平均年龄展示出来。

select gender,count(*),avg(age),group_concat(name) from .student group by gender;

——having,对分组或经where处理后的数据再进行筛选。
示例1:数据表CoreList有字段ClassID、StudentID、Core,请查询考试不及格人数超过6个的班级。

select ClassID from CoreList where Core < 60 group by ClassID having count(*) > 6;

where命令是对原始数据进行筛选,having是对分组数据进行筛选,且使用聚合函数的结果进行判断。
分组后除了可以使用having命令进行筛选,还可以进行order by排序和limit分页。

分页 limit

一、 限制查询出来的数据个数

——limit num(查询的数据个数)
示例:查询数据表的前5个数据。

select * from student limit 5;

二、 输入两个参数,进行范围获取数据

——limit start(数据开始的下标,0开始), count(查询的数据个数)
示例:查询第6条到第10跳数据。

select * from student limit 6,5;

如果有排序和分页要求,先排序后分页。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章