当前位置:网站首页>MySQL【排序与分页】
MySQL【排序与分页】
2022-07-30 12:04:00 【桜キャンドル淵】
目录
一、排序
#1. 排序
# 如果没有使用排序操作,默认情况下查询返回的数据是按照添加数据的顺序显示的。
SELECT * FROM employees;
# 1.1 基本使用
# 使用 ORDER BY 对查询到的数据进行排序操作。
# 升序:ASC (ascend)
# 降序:DESC (descend)
# 默认是从低到高排序
# 练习:按照salary从高到低的顺序显示员工信息
SELECT employee_id,last_name,salary
FROM employees
#desc是降序的意思
ORDER BY salary DESC;

# 练习:按照salary从低到高的顺序显示员工信息
SELECT employee_id,last_name,salary
FROM employees
ORDER BY salary ASC;
SELECT employee_id,last_name,salary
FROM employees
ORDER BY salary; # 如果在ORDER BY 后没有显式指名排序的方式的话,则默认按照升序排列。
#列的别名只能在 ORDER BY 中使用,不能在WHERE中使用。
#如下操作报错!
SELECT employee_id,salary,salary * 12 annual_sal
FROM employees
WHERE annual_sal > 81600;#2. 我们可以使用列的别名,进行排序
#这里我们分别将员工编号和收入,和收入乘12并且起了个别名为年收入进行按照年收入从低到高排序
SELECT employee_id,salary,salary * 12 annual_sal
FROM employees
ORDER BY annual_sal;
#列的别名只能在 ORDER BY 中使用,不能在WHERE中使用。
#如下操作报错!
SELECT employee_id,salary,salary * 12 annual_sal
FROM employees
WHERE annual_sal > 81600;![]()
为什么不能再where中使用呢?因为我们的MySQL在读取SQL语句的时候是先读取from,where语句,然后再读取select语句,然后再读取order by语句,而我们起别名是在select语句中,所以from和where的时候还没有别名,所以会报错,但是在运行到order by的时候已经有了别名,所以可以使用。
#3. 强调格式:WHERE 需要声明在FROM后,ORDER BY之前。
SELECT employee_id,salary
FROM employees
WHERE department_id IN (50,60,70)
ORDER BY department_id DESC;
#4. 二级排序
#练习:显示员工信息,按照department_id的降序排列,salary的升序排列
SELECT employee_id,salary,department_id
FROM employees
ORDER BY department_id DESC,salary ASC;
二、分页
#2. 分页
#2.1 mysql使用limit实现数据的分页显示
# 需求1:每页显示20条记录,此时显示第1页
SELECT employee_id,last_name
FROM employees
#从偏移量为0的位置显示20条数据
LIMIT 0,20; 
# 需求2:每页显示20条记录,此时显示第2页
SELECT employee_id,last_name
FROM employees
#从偏移量20的位置显示20条数据
LIMIT 20,20;

# 需求3:每页显示20条记录,此时显示第3页
SELECT employee_id,last_name
FROM employees
LIMIT 40,20;
#需求:每页显示pageSize条记录,此时显示第pageNo页:
#公式:LIMIT (pageNo-1) * pageSize,pageSize;#2.2 WHERE ... ORDER BY ...LIMIT 声明顺序如下:
# LIMIT的格式: 严格来说:LIMIT 位置偏移量,条目数
# 结构"LIMIT 0,条目数" 等价于 "LIMIT 条目数"
SELECT employee_id,last_name,salary
FROM employees
WHERE salary > 6000
ORDER BY salary DESC
#limit 0,10;
LIMIT 10;
#练习:表里有107条数据,我们只想要显示第 32、33 条数据怎么办呢?
SELECT employee_id,last_name
FROM employees
LIMIT 31,2;
#2.3 MySQL8.0新特性:LIMIT ... OFFSET ...
#练习:表里有107条数据,我们只想要显示第 32、33 条数据怎么办呢?
SELECT employee_id,last_name
FROM employees
#limit表示显示几条记录
#offset表示偏移量是多少
LIMIT 2 OFFSET 31;
#练习:查询员工表中工资最高的员工信息
SELECT employee_id,last_name,salary
FROM employees
ORDER BY salary DESC
#limit 0,1
LIMIT 1;
#2.4 LIMIT 可以使用在MySQL、PGSQL、MariaDB、SQLite 等数据库中使用,表示分页。
# 不能使用在SQL Server、DB2、Oracle!边栏推荐
- PanGu-Coder: 函数级的代码生成模型
- 嵌入式环境下并发控制与线程安全
- Get the original data API on 1688app
- 和数集团:让智慧城市更智慧,让现实生活更美好
- 崩了,该来的终究躲不掉
- Difference between C# enumeration type and xaml
- Microsoft SQL server hacked, bandwidth stolen
- Apifox generates interface documentation tutorial and operation steps
- 基于滑模控制的不确定中立型系统有限时间稳定
- 程序环境和预处理(详解)
猜你喜欢
随机推荐
最基础01/完全背包
13-GuliMall Basics Summary
程序环境和预处理(详解)
Win11打不开exe应用程序怎么办?Win11无法打开exe程序解决方法
Redis master-slave replication
JS事件参数对象event
如何用Golang来手撸一个Blog - Milu.blog 开发总结
English line break
Microsoft SQL server hacked, bandwidth stolen
Breaking the principle and introducing SQL, what does MongoDB want to do???
saltstack学习3模块
int a=8,a=a++,a? int b=8,b=b+1,b?
TensorFlow自定义训练函数
win下怎么搭建php环境的方法教程
saltstack学习2grains&pillar
CMake库搜索函数居然不搜索LD_LIBRARY_PATH
概率论的学习整理--番外1:可重复且无次序的计数公式C(n+k-1,k) 的例题 : 同时丢3个骰子,会有多少种情况?答案不是216而是56!
Matlab基础(3)——元胞与结构体
别被隐私计算表象骗了 | 量子位智库报告(附下载)
概率论的学习整理5:贝叶斯(bayes)法则和贝叶斯概率









