SQL语言学习记录-排序与分页
2025-07-21

ORDER BY 进行排序

#升序ASC  ascend(低到高)(默认);降序DESC  descend(高到低)
SELECT employee_id,last_name,salary FROM  employees ORDER BY salary ;
# 按照年工资进行排序
SELECT employee_id,last_name,salary,commission_pct,salary*12*(1+IFNULL(commission_pct,0)) anualSalary FROM  employees ORDER BY anualSalary DESC;

/*注意:列的别名只能在ORDER BY 中使用,在WHERE中是不可以使用的 
 (执行SQL的时候先执行FROM WHERE,再执行SELECT 然后才是ORDER BY,别名在WHERE之后执行故无法在WHERE中使用 )
*/

#二级(多级)排序  先按照department_id降序,再按照salary升序
SELECT employee_id,last_name,salary,department_id
FROM  employees
ORDER BY department_id DESC,salary ASC;

LIMIT 分页

# 分页 LIMIT 偏移量,size大小  默认LIMIT 0,SIZE
SELECT employee_id,last_name
FROM  employees
LIMIT 20,20;

#LIMIT ORDER BY WHERE 申明顺序
SELECT employee_id,last_name
FROM  employees
WHERE salary>6000
ORDER BY salary DESC
LIMIT 20,20;

# MySQL8.0 新特性 OFFSET 偏移量
SELECT employee_id,last_name
FROM  employees
LIMIT 20 OFFSET 2;
#等价于
SELECT employee_id,last_name
FROM  employees
LIMIT 2,20;

/*
注意:LIMIT必须放在句子最后
LILMIT 的好处
可以减少网路传输量
可以提升查询效率 提前限定返回的数据量,可以让SELECT不去扫描全表
*/