MySQL LIMIT 范围 0,500 和 1, 500 有啥区别?

Posted

技术标签:

【中文标题】MySQL LIMIT 范围 0,500 和 1, 500 有啥区别?【英文标题】:What is the difference between MySQL LIMIT range of 0,500 and 1, 500?MySQL LIMIT 范围 0,500 和 1, 500 有什么区别? 【发布时间】:2013-01-26 10:25:15 【问题描述】:

如果我想在 mysql 行 1 到 500 中,我应该使用 LIMIT 0, 500 还是 LIMIT, 1, 500?有什么不同?谢谢!

【问题讨论】:

【参考方案1】:

第一个从整个结果的第一个记录开始,而第二个从结果的第二个记录开始。

考虑以下记录

ID
1 -- index of the first record is zero.
2
3
4
5
6

如果你执行

LIMIT 0, 3
-- the result will be ID: 1,2,3

LIMIT 1, 3
-- the result will be ID: 2,3,4
SQLFiddle Demo

其他人

Limit - MySQL Command (for more info)

【讨论】:

那么 LIMIT 0,500 和 LIMIT 500 一样吗? @Edward 是的。是一样的。 谢谢。好的,假设我想从第 500 行开始,应该是 LIMIT 500、5000 还是应该是 LIMIT 499、5000? 应该是LIMIT 499, 5000。因为你已经指定了持续时间。重点是,如果您使用LIMIT XX 是总行数,而在LIMIT X, Y 中,X 是行的索引,而 Y 是记录总数。 @Bulat 如果查询中没有提供ORDER BY,则默认排序顺序将由 KEYS 定义,例如。 主键【参考方案2】:

在 MySQL 中,LIMIT n1, n2 的含义是:

n1 : 起始索引 n2 :您要显示的记录/数据的数量

例如:

ID ------------------------- 1 ------------ > 索引 0 2 3 4 5 6 7 8 9 10 ------------ > 索引 9

现在如果你写像

这样的查询 选择 * 从 tbl_name 限制 0,5 输出 : 1 2 3 4 5

如果你写这样的查询

选择 * 从 tbl_name 限制 2,7 输出 : 3 4 5 6 7 8 9

【讨论】:

【参考方案3】:

@JohnWoo 那不正确。未指定 SELECT 语句中的行顺序(没有 ORDER BY 子句)。因此,即使通过视觉查看此类查询的输出顺序,它可能看起来是特定顺序,但该顺序并不能保证,因此也不可靠。如果您需要以某种方式对结果集进行排序,则必须使用 ORDER BY 子句。

【讨论】:

【参考方案4】:

身份证

1 2 3 4 5 ------------ > 索引 0 6 7 8 9 ------------ > 5 个索引后添加 4 个值 10

如果你想要从 5 到 9 的数据,那么查询应该是

SELECT * from table_name LIMIT 5,4

【讨论】:

这真的回答了这个问题吗?你能用OP的例子说清楚吗

以上是关于MySQL LIMIT 范围 0,500 和 1, 500 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

ORDER BY 中查询非常慢,LIMIT 范围较大

mysql中的limit原理

MySQL 限制范围

MySQL 简单查询

mysql查询所用时间过长 如何优化?

mysql --limit和offset区别