order by排序
默认是返回的数据是按照添加的顺序显示的。
使用 order by 可以对数据进行排序
排序的方式
- 升序
- 降序
- 查询学生信息 并按照分数score 降序;
排序的时候 order by 后面跟要排序的列名;SELECT * from students ORDER BY score desc;
- desc 表示降序排序;
- asc 表示升序,默认是按照升序排序 ,所以asc可以不用写;
- 按照学生年龄进行降序排序;
根据出生年月,年龄越大,出生日期越小,按照年龄降序排序,即按照出生日期升序排序;所以sql语句如下:
SELECT * from students ORDER BY birthday asc;
多个条件排序
有这样的场景:
- 按照分数降序排序,
- 如果分数一样,按照出生日期升序排序;
select * from students ORDER BY score desc, birthday asc;
- 按照分数升序排序,
- 分数一样,按照 id 降序排序;
select * from students
order by score, id desc;
在排序的时候,如果有条件过滤,首先 进行where条件过滤。再进行order by排序。
查询分数在60以上的同学,并按成绩进行降序排序;
select * from students
where score > 60
order by score desc;
查询成绩在 60-80 之间的学生信息,并按照 出生年月(birthday) 升序排序;
- 查询姓名为三个字的同学,并按照成绩(score)进行降序排序; ```sql — 2. 查询成绩在 60-80 之间的学生信息,并按照 出生年月(birthday) 升序排序;
select * from students WHERE score BETWEEN 60 and 80 ORDER BY birthday asc;
— 3. 查询姓名为三个字的同学,并按照成绩(score)进行降序排序; SELECT * from students WHERE name like “_“ ORDER BY score desc;
<a name="j01GV"></a>
# limit 限制
默认算出来结果返回所有符合条件的数据。<br />limit 可以限制返回的数据数量;
1. 按照成绩降序排序。显示前三个数据
```sql
select * from students order by score desc limit 3;
查询成绩score列,输出最高分数;
select score from students order by score desc limit 1;
查询第二高的分数; ```sql — 1. 找到最高的分数 select score from students order by score desc limit 1;
— 2. 如果要找第二高的分数, 小于最高分数中的第一个; 假设我已经知道最高分100 select score from students WHERE score < 100 ORDER BY score desc limit 1;
— 合并sql
select score from students WHERE score < (select score from students order by score desc limit 1) — 100 替换为具体的sql查询语句 ORDER BY score desc limit 1;
3. 查找分数最高的人的姓名,分数,科目;
思路:
1. 先找到最高分;
1. 假设我知道最高分,最高分作为条件。
---
```sql
-- 1 .找最高分
select score from students order by score desc limit 1;
-- 2. 找人
select name,score,course from students
where score = (select score from students order by score desc limit 1);
limit m,n 指定取值区间
limit 3,2
- 3 从3+1 (4)行 开始
- 2 表示统计2行数据
按成绩 降序排序, 取 从第4-9行的数据。
select * from students order by score desc limit 3,6;
按照id 排序,取id 为6-10 的所有数据;
select * from students
order by id
limit 5,5;
按照id 升序排序,取最后5条数据。
-- 1. 取最后5条数据
select * from students order by id desc limit 5;
-- 2. 将上面的结果进行升序
select * from (select * from students order by id desc limit 5) as tmp
order by id;