MySQL 中的 LIMIT 语句及基本用法

2025-04-16 16:50

本文主要是介绍MySQL 中的 LIMIT 语句及基本用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《MySQL中的LIMIT语句及基本用法》LIMIT语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率,:本文主要介绍MySQL中的LIMIT语句,需要的朋友可以参考下...

MySQL 中的 LIMIT 语句

LIMIT 语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率。

1. LIMIT 语法

SELECT 列名1, 列名2, ...
FROM 表名
WHERE 条件
ORDER BY 排序字段
LIMIT 记录数 OFFSET 偏移量;

或:

SELECT 列名1, 列名2, ...
FROM 表名
WHERE 条件
ORDER BY 排序字段
LIMIT 偏移量, 记录数;

LIMIT 偏移量, 记录数LIMIT 记录数 OFFSET 偏移量 作用相同。

2. LIMIT 基本用法

(1) 获取前 N 行数据

SELECT * FROM users LIMIT 5;

返回表 users 的前 5 行数据

(2) LIMIT 结合 ORDER BY

如果不排序,返回的数据可能不稳定(顺序不确定)。

SELECT * FROM users ORDER BY age DESC LIMIT 5;

先按 age 降序排序,再取前 5 行数据。

(3) LIMIT 进行分页查询

如果要获取第 11 到 20 条记录

SELECT * FROM users ORDER BY id ASC LIMIT 10 OFFSET 10;

或:

SELECT * FROM users ORDER BY id ASC LIMIT 10, 10;
http://www.chinasem.cn

等效于 LIMIT 10 OFFSET 10,其中:

  • 10偏移量(OFFSET),表示跳过前 10 条数据。
  • 10返回的行数(LIMIT)

分页查询公式

LIMIT 每页条数 OFFSET (当前页 - 1) * 每页条数;

例如:

  • 第 1 页(前 10 条):LIMIT 10 OFFSET 0
  • 第 2 页(第 11-20 条):LIMIT 10 OFFSET 10
  • 第 3 页(第 21-30 条):LIMIT 10 OFFSET 20

3. LIMIT 结合 COUNT()

(1) 统计总记录数

分页时,通常要先获取总记录数:

SELECT COUNT(*) FROM users;

COUNT(\*) 更快,不会忽略 NULL

4. LIMIT 结合 RAND()(随机取数据)

如果想要随机返回 3 条记录

SELECT * FROM users ORDER BY RAND() LIMIT 3;

⚠ 注意

ORDER BY RAND() 性能较低,会对所有数据进行排序再取值。

更高效的随机查询(适用于 id 递增的数据表):

SELECT * FROM users WHERE id >= (SELECT FLOOR(RAND() * (SELECT MAX(id) FROM users))) LIMIT 3;

5. LIMIT 语句的性能优化

(1) LIMIT OFFSET 可能导致性能下降

OFFSET 很大时:

SELECT * FROM users ORDER BY id LIMIT 10 OFFSET 100000;

MySQL 仍然会扫描 100000 行,然后丢弃前 100000 条数据,只返回 10 条,影响性能

优化方法:用索引加条件替代 OFFSET

SELECT * FROM users WHERE id > 100000 ORDER BY id LIMIT 10;

适用于 id 是自增主键的情况,查询速度更快。

(2) LIMIT 结合 JOIN 可能引发性能问题

SELECT * FROM users JOIN orders ON users.id = orders.user_id ORDER BY users.id LIMIT 100000, 10;

如果 users.id 没有索引,查询会很慢

优化方法

SELECT users.* FROM users WHERE users.id > (SELECT id FROM users ORDER BY id LIMIT 10000android0, 1) ORDER BY users.id LIMIT 10;

找到偏移的起点,再 LIMIT 取值,减少扫描行数

6. LIMIT 结合 GROUP BY

如果要获取每个城市的前 3 名用户

SELECT * FROM (    SELECT *, ROW_NUMBER() OVER (PARTITION BY city ORDER BY age DESC) AS rank    FROM users) AS temp WHERE rank <= 3;

ROW_NUMBER() 需要 MySQL 8.0+ 才支持。

7. LIMIT 结合 DISTINCT

如果要获取唯一数据的前 5 条

SELECT DISTINCT city FROMwww.chinasem.cn users LIMIT 5;

LIMITDISTINCT 之后生效,只返回 5 个唯一的 city

8. LIMIT 语句总结

用法语法示例说明
获取前 N 行LIMIT 5取前 5 条数据
分页查询LIMIT 10 OFFSET 10取第 11-20 条数据
随机取 N 条ORDER BY RAND() LIMIT 3随机返回 3 条数据
统计总数SELECT COUNT(*) FROM users;获取总记录数
优化大偏移WHERE id > (SELECT id FROM users LIMIT 100000, 1) LIMIT 10;避免 OFFSET 性能问题

重点总结

  • LIMIT 限制查询返回的行数,用于分页或取部分数据。
  • LIMIT 偏移量, 行数 等价于 LIMIT 行数 OFFSET 偏移量
  • ORDER BY + LIMIT 确保数据顺序稳定。ORDER BY RAND() 效率低,大数据表建议用更优化的随机查询。
  • OFFSET 查询效率低,建议用索引优化查询。

这样,你的 LIMIT 查询就会更快、更高效!

到此这篇关于MySQL 中的 LIMIT 语句及基本用法的文章就介绍到这了,更多相关MySQL LIMIT 语句内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于MySQL 中的 LIMIT 语句及基本用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154243

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp