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 X
,X 是总行数,而在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 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章