order by排序

默认是返回的数据是按照添加的顺序显示的。
使用 order by 可以对数据进行排序
排序的方式

  • 升序
  • 降序

  1. 查询学生信息 并按照分数score 降序;
    1. SELECT * from students ORDER BY score desc;
    排序的时候 order by 后面跟要排序的列名;
  • desc 表示降序排序;
  • asc 表示升序,默认是按照升序排序 ,所以asc可以不用写;
  1. 按照学生年龄进行降序排序;

根据出生年月,年龄越大,出生日期越小,按照年龄降序排序,即按照出生日期升序排序;所以sql语句如下:

  1. SELECT * from students ORDER BY birthday asc;

多个条件排序

有这样的场景:

  1. 按照分数降序排序,
  2. 如果分数一样,按照出生日期升序排序;
  1. select * from students ORDER BY score desc, birthday asc;

image.png


  1. 按照分数升序排序,
  2. 分数一样,按照 id 降序排序;
    1. select * from students
    2. order by score, id desc;

在排序的时候,如果有条件过滤,首先 进行where条件过滤。再进行order by排序。

  1. 查询分数在60以上的同学,并按成绩进行降序排序;

    1. select * from students
    2. where score > 60
    3. order by score desc;

    image.png

  2. 查询成绩在 60-80 之间的学生信息,并按照 出生年月(birthday) 升序排序;

  3. 查询姓名为三个字的同学,并按照成绩(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;

  1. <a name="j01GV"></a>
  2. # limit 限制
  3. 默认算出来结果返回所有符合条件的数据。<br />limit 可以限制返回的数据数量;
  4. 1. 按照成绩降序排序。显示前三个数据
  5. ```sql
  6. select * from students order by score desc limit 3;

image.png

  1. 查询成绩score列,输出最高分数;

    1. select score from students order by score desc limit 1;

    image.png

  2. 查询第二高的分数; ```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;

  1. 3. 查找分数最高的人的姓名,分数,科目;
  2. 思路:
  3. 1. 先找到最高分;
  4. 1. 假设我知道最高分,最高分作为条件。
  5. ---
  6. ```sql
  7. -- 1 .找最高分
  8. select score from students order by score desc limit 1;
  9. -- 2. 找人
  10. select name,score,course from students
  11. where score = (select score from students order by score desc limit 1);

limit m,n 指定取值区间

limit 3,2

  • 3 从3+1 (4)行 开始
  • 2 表示统计2行数据
  1. 按成绩 降序排序, 取 从第4-9行的数据。

    1. select * from students order by score desc limit 3,6;
  2. 按照id 排序,取id 为6-10 的所有数据;

    1. select * from students
    2. order by id
    3. limit 5,5;

    image.png

  3. 按照id 升序排序,取最后5条数据。

  1. -- 1. 取最后5条数据
  2. select * from students order by id desc limit 5;
  3. -- 2. 将上面的结果进行升序
  4. select * from (select * from students order by id desc limit 5) as tmp
  5. order by id;