MySQL排序与分页

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 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;
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
13天前
|
SQL 缓存 关系型数据库
如何解决MySQL 的深度分页问题?
在构建高性能Web应用程序时,数据库查询性能至关重要。本文深入探讨了MySQL中`LIMIT ... OFFSET ...`语法的性能瓶颈,并介绍了一种更高效的分页方法——游标分页(Cursor Pagination)。通过记录每页最后一个记录的唯一标识,游标分页能显著提升查询效率,将时间复杂度从O(n + m)降低到O(log n + m),特别适用于大规模数据的分页查询场景。此外,文章还介绍了其他优化方法,如覆盖索引分页、分区表、缓存和基于时间戳的分页,并提供了实践中的最佳建议,帮助开发者选择最适合的分页策略,提升系统性能和用户体验。
|
5月前
|
自然语言处理 关系型数据库 MySQL
如何在mysql数据库里进行文本的相似度排序?
【8月更文挑战第28天】如何在mysql数据库里进行文本的相似度排序?
444 62
|
5月前
|
存储 关系型数据库 MySQL
mysql数据库查询时用到的分页方法有哪些
【8月更文挑战第16天】在MySQL中,实现分页的主要方法包括:1)使用`LIMIT`子句,简单直接但随页数增加性能下降;2)通过子查询优化`LIMIT`分页,提高大页码时的查询效率;3)利用存储过程封装分页逻辑,便于复用但需额外维护;4)借助MySQL变量实现,可能提供更好的性能但实现较复杂。这些方法各有优缺点,可根据实际需求选择适用方案。
580 2
|
1月前
|
关系型数据库 MySQL PHP
php实现一个简单的MySQL分页
通过本文的详细步骤和代码示例,我们实现了一个简单的PHP MySQL分页功能。主要步骤包括计算总记录数、设置分页参数、查询当前页的数据以及生成分页链接。这种分页方式适用于大多数Web应用,能够有效提升用户体验和页面响应速度。
40 4
|
1月前
|
SQL 关系型数据库 MySQL
mysql分页读取数据重复问题
在服务端开发中,与MySQL数据库进行数据交互时,常因数据量大、网络延迟等因素需分页读取数据。文章介绍了使用`limit`和`offset`参数实现分页的方法,并针对分页过程中可能出现的数据重复问题进行了详细分析,提出了利用时间戳或确保排序规则绝对性等解决方案。
|
2月前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
3月前
|
缓存 关系型数据库 MySQL
一文彻底弄懂MySQL优化之深度分页
【10月更文挑战第24天】本文深入探讨了 MySQL 深度分页的原理、常见问题及优化策略。首先解释了深度分页的概念及其带来的性能和资源问题。接着介绍了基于偏移量(OFFSET)和限制(LIMIT)以及基于游标的分页方法,并分析了它们的优缺点。最后,提出了多种优化策略,包括合理创建索引、优化查询语句和使用数据缓存,帮助提升分页查询的性能和系统稳定性。
276 1
|
3月前
|
SQL 搜索推荐 关系型数据库
MySQL 如何实现 ORDER BY 排序?
本文详细解析了MySQL中`ORDER BY`的实现原理及优化方法。通过解析与优化、执行及多种优化技术,如索引利用、内存排序、外部排序等,帮助你提升排序性能。了解其背后的机制,可显著优化查询效率。
195 4
|
3月前
|
SQL 搜索推荐 关系型数据库
MySQL 如何实现 ORDER BY 排序?
在实际开发中,我们经常会使用 MySQL 的 `ORDER BY`进行排序,那么,`ORDER BY`是如何实现的排序的?我们该如何优化 `ORDER BY`的排序性能?这篇文章,我们来聊一聊。
53 3
|
4月前
|
算法 关系型数据库 MySQL
MySQL高级篇——排序、分组、分页优化
排序优化建议、案例验证、范围查询时索引字段选择、filesort调优、双路排序和单路排序、分组优化、带排序的深分页优化