在第一天学习的过程中,查询的结果,是按照默认的顺序显示,也可以进行排序。

order by 排序

  • asc 升序 (默认的排序方式,可以不用写)
  • desc 降序

    默认的排序的方式是升序, 使用方式就是后面跟上对应的排序字段。 ```sql — 查询学生表,按照年龄进行排序 默认从小到大(升序)

SELECT * from student ORDER BY age;

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/87080/1631933010379-26ae3bc7-add4-4122-9c20-b0a02b3b7ea3.png#clientId=u6f4cc4b0-962b-4&from=paste&height=223&id=ub8b4c7a2&margin=%5Bobject%20Object%5D&name=image.png&originHeight=446&originWidth=604&originalType=binary&ratio=1&size=91285&status=done&style=none&taskId=ua611fcec-f332-4606-bfd3-f77c75a6f1d&width=302)<br />如果降序排序就是 跟上 desc;
  2. ```sql
  3. -- 查询学生表,按照年龄进行排序 降序
  4. SELECT * from student
  5. ORDER BY age DESC;

image.png

  1. 成绩按照从大到小排序。

    1. SELECT * from student
    2. ORDER BY score DESC;
  2. sex 不为空的学生按照 age 从小到大排序。

    1. SELECT * FROM student
    2. WHERE not sex is NULL -- 条件
    3. ORDER BY age -- 排序

    多个字段排序

    排序的时候也可以根据多个字段进行排序
    order by age, score

  3. 先age进行 从小到大的排序

  4. 如果两个age相等,再按照 score 进行从小到大的排序

  1. 查询学生表,按照学生的age排序,age相等,按照成绩(score) 排序

    1. select * from student
    2. order by age, score;
  2. 查询学生表,按照学生的score排序(升序),score相等,按照age 排序(降序)。

    1. select * from student
    2. order by score asc, age desc;
  3. 查询学生表,age,score都不为空,进行排序,score 从大到小排序。

    1. select * from student
    2. where not age is null and not score is null
    3. order by score desc;

limit 控制显示的结果数量

limit 1 只显示1条结果。

  1. 按照age排序,只显示两条内容

    1. select * from student
    2. order by age
    3. limit 2;

    image.png

  2. 查询最大的年龄。

    1. select age FROM student
    2. order by age desc
    3. limit 1;
  3. 查询最小的分数。(不包含Null)

    1. select score from student
    2. where not score is null
    3. order by score
    4. limit 1;

limit m,n 分页

limit 1,2

  • 1 从第(1+1=2)2条数据开始显示
  • 2 显示2条数据
  1. select * from student
  2. ORDER BY age
  3. LIMIT 2,3

image.png

  1. 按照成绩score降序排序,显示 第5-10条数据。
    1. 5-10 总共6条
    2. 从第5条开始显示(4+1)
    3. 确定 limit 4,6
      1. select * from student
      2. order by score desc
      3. limit 4,6;

distinct 去除重复数据

image.png
在查询的时候,去重

  1. 显示去重之后的成绩

    1. select distinct(score) from student;

    image.png

  2. 查找第二高分数;

    1. select distinct(score) from student
    2. order by score desc
    3. limit 1,1;
  3. 查找倒数第一的分数(不包含Null);

    1. select distinct(score) from student
    2. where not score is null
    3. order by score
    4. limit 1;

    备注: 去重的 时候每次只能添加1个字段。

  1. select distinct(age) from student;

下面的语句会报错

  1. select distinct(name),distinct(age) from student;

Mysql-02 Mysql 排序 - 图6