排序


排序规则

  • 使用ORDER BY子句排序,ORDER BY子句在SELECT语句的结尾
  • ASC:升序,DESC:降序,默认是按升序排序
  • 可以使用不在SELECT列表中的列排序

    单列排序

    ```sql SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY hire_date DESC;

SELECT employee_id, last_name, salary*12 annual_sal FROM employees ORDER BY annsal;

注意,列的别名只能在ORDER BY中使用,不能在WHERE中使用

报错:Unknown column ‘annual_sal’ in ‘where clause’

执行顺序:FROM WHERE —> SELECT —> ORDER BY

SELECT employee_id, last_name, salary*12 annual_sal FROM employees WHERE annual_sal > 80000;

  1. <a name="o0yqZ"></a>
  2. #### 多列排序
  3. ```sql
  4. SELECT last_name, department_id, salary
  5. FROM employees
  6. ORDER BY department_id, salary DESC;

说明:在对多列进行排序的时候,首先排序的第一列必须有相同的列值,才会对第二列进行排序。如果第一列数据中的所有值都是唯一的,将不再对第二列进行排序

分页


实现背景

  • 查询返回的记录太多了,查看起来很不方便,想实现分页查询
  • 表里有4条数据,只想显示第2、3条数据

    实现规则

    使用LIMIT实现分页,格式:LIMIT [位置偏移量, ] 行数

  • 第一个参数“位置偏移量”指示MySQL从哪一行开始显示,是一个可选参数,如果不指定“位置偏移量”,将会从表中的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,以此类推)

  • 第二个参数“行数”指示返回的记录条数
  • 分页显示公式:(当前页数 - 1) * 每页条数,每页条数
  • 注意:LIMIT子句必须放在整个SELECT语句的最后 ```sql

    前10条记录

    SELECT FROM 表名 LIMIT 0, 10; 或者 SELECT FROM 表名 LIMIT 10;

第11至20条记录

SELECT * FROM 表名 LIMIT 10, 10;

第21至30条记录

SELECT * FROM 表名 LIMIT 20, 10; ```

MySQL8.0中可以使用LIMIT 3 OFFSET 4,意思是获取从第5条记录开始后面的3条记录