MySQL排序与分页

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MySQL排序与分页

MySQL排序与分页

排序

默认情况下,查询返回的数据是按照添加数据的顺序来显示的

如果在ORDER BY后没有显式指定排序的方式,默认为升序

SELECT employee_id,last_name,salary
FROM employees
ORDER BY salary;

升序与降序

# 升序
SELECT employee_id,last_name,salary
FROM employees
ORDER BY salary ASC;
# 降序
SELECT employee_id,last_name,salary
FROM employees
ORDER BY salary DESC;

可以使用列的别名,进行排序

SELECT employee_id,salary,salary*12 AS annual_asl
FROM employees
ORDER BY annual_asl;

另外,列的别名只能在ORDER BY使用,不能在WHERE中使用,下面的语句将会报错

SELECT employee_id,salary,salary*12 AS annual_asl
FROM employees
WHERE annual_sal > 200000;# WHERE不能使用别名

WHERE需要声明在FROM后,ORDER BY之前

SELECT employee_id,salary,department_id
FROM employees
WHERE department_id IN (50,60)
ORDER BY department_id DESC;

二级排序

显示员工信息,按照department_id的降序排序,salary的升序排序(department_id相同的情况下)

SELECT employee_id,salary,department_id
FROM employees
ORDER BY department_id DESC,salary ASC

分页

使用limit实现数据的分页显示

每页显示20条记录,此时显示第一页

SELECT employee_id,last_name
FROM employees
LIMIT 0,20;

每页显示20条数据,此时显示第二页

SELECT employee_id,last_name
FROM employees
LIMIT 20,20;

每页显示20条数据,此时显示第三页

SELECT employee_id,last_name
FROM employees
LIMIT 40,20;

每页显示pageSize条记录,此时显示第pageNo页:

公式:LIMIT(pageNo-1)*pageSize,pageSize;前者为从第几个开始(下标,0为第一个)

WHERE、ORDER BY、LIMIT声明顺序:

SELECT employee_id,last_name,salary
FROM employees
WHERE salary > 6000
ORDER BY salary DESC
LIMIT 0,10;

LIMIT的结构格式:严格来说为:LIMIT位置偏移量,条目数。

结构LIMIT 0,条目数等价于LIMIT 条目数

... LIMIT 10;

练习:表里有107条数据,我们只要显示第32、33条数据:

SELECT employee_id,last_name
FROM employees
LIMIT 31,2;

mysql8.0新特性:LIMIT...OFFSET...

SELECT employee_id,last_name
FROM employees
LIMIT 2 OFFSET 32;

OFFSET指的偏移量,相当于换个位置。

约束返回的数量可以减少数据表的网络传输量,也可以提升查询效率,如果我们知道返回结果只有1条,就可以使用LIMIT,告诉SELECT语句只需要返回一条记录即可。这时候不需要扫描完整的表,只需要检索到一条符合条件的记录即可返回。

练习:查询员工表中工资最高的员工信息

SELECT employee_id,last_name,salary
FROM employees
ORDER BY salary
LIMIT 1;

练习:查询邮箱中包含e的员工的信息,并先按邮箱的字节数降序,再按部门序号升序,每页显示10条,从第三页(20)开始:

SELECT employee_id,last_name,email,department_id
FROM employees
WHERE email REGEXP '[e]'
ORDER BY LENGTH(email) DESC,department_id
LIMIT 10 OFFSET 20;
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
23天前
|
自然语言处理 关系型数据库 MySQL
如何在mysql数据库里进行文本的相似度排序?
【8月更文挑战第28天】如何在mysql数据库里进行文本的相似度排序?
191 62
|
1月前
|
存储 关系型数据库 MySQL
mysql数据库查询时用到的分页方法有哪些
【8月更文挑战第16天】在MySQL中,实现分页的主要方法包括:1)使用`LIMIT`子句,简单直接但随页数增加性能下降;2)通过子查询优化`LIMIT`分页,提高大页码时的查询效率;3)利用存储过程封装分页逻辑,便于复用但需额外维护;4)借助MySQL变量实现,可能提供更好的性能但实现较复杂。这些方法各有优缺点,可根据实际需求选择适用方案。
124 2
|
6天前
|
算法 关系型数据库 MySQL
MySQL高级篇——排序、分组、分页优化
排序优化建议、案例验证、范围查询时索引字段选择、filesort调优、双路排序和单路排序、分组优化、带排序的深分页优化
MySQL高级篇——排序、分组、分页优化
|
19天前
|
自然语言处理 关系型数据库 MySQL
match如何在mysql数据库里进行文本的相似度排序?
【9月更文挑战第1天】match如何在mysql数据库里进行文本的相似度排序?
30 1
|
1月前
|
存储 算法 关系型数据库
探索MySQL递归查询,优雅的给树结构分页!
总结起来,对于MySQL中的树结构数据,递归查询结合预排序遍历树算法可以实现优雅的分页,但需要注意性能优化和数据更新的问题。这项技术提供了一种高效处理层级数据的工具,使得开发者可以在复杂的数据结构下实现直观和可靠的数据查询。
61 1
|
1月前
|
SQL 关系型数据库 MySQL
MySQL】-DQL(基本、条件、分组、排序、分页)详细版
通过这些查询方法,你可以高效地检索、分析和组织MySQL数据库中的数据,以满足各种应用需求。实践中,理解这些SQL语句的基础知识以及它们如何组合起来进行复杂的数据操作是至关重要的。
26 1
|
1月前
|
算法 关系型数据库 MySQL
揭秘MySQL中的版本号排序:这个超级算法将颠覆你的排序世界!
【8月更文挑战第8天】在软件开发与数据管理中,正确排序版本号对软件更新及数据分析至关重要。因MySQL默认按字符串排序版本号,可能出现'1.20.0'在'1.10.0'之前的不合理情况。解决办法是将版本号各部分转换为整数后排序。例如,使用`SUBSTRING_INDEX`和`CAST`函数从`software`表的`version`字段提取并转换版本号,再按这些整数排序。这种方法可确保版本号按逻辑正确排序,适用于'major.minor.patch'格式的版本号。对于更复杂格式,需调整处理逻辑。掌握此技巧可有效应对版本号排序需求。
86 3
|
2月前
|
SQL 关系型数据库 MySQL
MySQL设计规约问题之为什么在使用LIMIT进行分页时要注意效率,并且LIMIT的值越大效率越低
MySQL设计规约问题之为什么在使用LIMIT进行分页时要注意效率,并且LIMIT的值越大效率越低
|
2月前
|
关系型数据库 MySQL
MySQL 保姆级教程(三):排序检索数据
MySQL 保姆级教程(三):排序检索数据
|
2月前
|
关系型数据库 MySQL 数据库
MybatisPlus添加数据数据库没有数据,数据消失,使用Navicate看不到数据,Navicate中Mysql的数据与idea的数据不一定同步,Navicate与idea的数据库同步,其实有分页
MybatisPlus添加数据数据库没有数据,数据消失,使用Navicate看不到数据,Navicate中Mysql的数据与idea的数据不一定同步,Navicate与idea的数据库同步,其实有分页

热门文章

最新文章