排序
如果没有指定排序,顺序按照添加顺序显示
# 不指定升序降序, 默认升序
# 升序ASC, 降序DESC
# 排序
# 按照员工工资升序排列
SELECT employee_id,salary FROM employees ORDER BY salary ASC;
使用列名的别名进行排序
# 按照员工年工资排序
SELECT employee_id,salary * 12 annual_sal FROM employees ORDER BY annual_sal ASC;
# 列名的别名不能在where中使用
# 错误例子
SELECT employee_id,salary * 12 annual_sal FROM employees WHERE annual_sal>50000;
> 1054 - Unknown column 'annual_sal' in 'where clause'
> 时间: 0.001s
如果我们要通过几个参数来进行排序就需要进行多级排序
# 基本语句
# 按照列名1的升序、列名2的降序排列
# 这里的排序优先级是先按照列名1排序,只有列名1相同才回进行列名2的排序
order by 列名1 ASC, 列名2 DESC;
# 按照员工工资和id排序
SELECT employee_id,salary * 12 annual_sal FROM employees ORDER BY annual_sal ASC, employee_id DESC;
分页
通过LIMIT显示指定位置的内容来实现分页
# LIMIT 起始位置,显示个数;
# 这里的起始位置是从0开始的,相当于数组的0位置,所以要显示1-20,起始位置就是0
# 显示1-20
SELECT employee_id,first_name FROM employees LIMIT 0,20;
# 显示20-40
SELECT employee_id,first_name FROM employees LIMIT 20,20;
# 分页计算
# 已知当前页数与显示个数
LIMIT (当前页数 - 1) * 显示个数,显示个数;
# 8.0 新特性
LIMIT 显示个数 offset 起始位置;
# 显示1-20
SELECT employee_id,first_name FROM employees LIMIT 20 offset 0;
# 显示20-40
SELECT employee_id,first_name FROM employees LIMIT 20 offset 20;
注:**顺序 from ..... where ..... order by .... ASC/DESC LIMIT **
其他数据库的分页功能实现
-
SQLServer、Access
SELECT TOP 数量 表名....
-
DB2
SELECT ...... FETCH first 5 rows only
-
oracle
SELECT rownum ...... where rownum < 10