“ LIMIT 0,1”和“ LIMIT 1”之间有什么区别吗?


15

我最近偶然发现了示例代码,这些代码与这些符号有所不同。

SELECT * FROM table LIMIT 0, 1
SELECT * FROM table LIMIT 1

如果我没记错的话,第一个参数应被视为偏移量,这两个查询的目的是将选择范围限制为 table

忽略偏移量时是否有负面影响/如何首先排除偏移量?还是我误解了查询?


3
不,您说对了,它们是等效的。这也是:LIMIT 1 OFFSET 0。但是,除非有特殊原因,否则您应该真正ORDER BY在具有的任何查询中包含该查询LIMIT
ypercubeᵀᴹ

Answers:


13

文档所述

该  LIMIT 子句可用于约束SELECT 语句返回的行数  。 LIMIT 接受一个或两个数字参数,两个参数都必须是非负整数常量(使用预处理语句时除外)。

有两个参数,第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。The offset of the initial row is 0 (not 1)

LIMIT子句在SELECT语句中用于约束结果集中的行数。该LIMIT子句接受一个或两个参数。两个参数的值都必须为零或正整数常量。

下面说明LIMIT带有2个参数的子句语法:

SELECT * FROM tbl
LIMIT offset, count;

让我们看看LIMIT子句中的偏移量和计数是什么意思:

  • offset指定的第一行的偏移回报。第一行的偏移量是0,而不是1。
  • count行指定最大数量返回。

LIMIT与一个参数一起使用时,此参数将用于指定从结果集的开头返回的最大行数。

SELECT * FROM tbl LIMIT count;

上面的查询等效于以下带有带有LIMIT两个参数的子句的查询:

SELECT * FROM tbl LIMIT 0, count;

LIMIT子句常与ORDER BY子句一起使用。首先,您使用ORDER BY子句根据特定条件对结果集进行排序,然后使用LIMIT子句查找最小值或最大值。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.