在MySQL中将LIMIT和OFFSET一起使用时,返回哪些行?


140

在下面的查询中:

SELECT column 
FROM table
LIMIT 18 OFFSET 8

我们将从输出中得到多少结果,以及从哪里到哪里?


订单需要先为LIMIT,然后为OFFSET。如果没有,它将引发错误。
Mouser 2015年

Answers:


189

从记录#9开始到记录#26结束,它将返回18个结果。

首先从读取查询offset。首先,您要偏移8,这表示您跳过了查询的前8个结果。然后限制为18。这意味着您考虑记录9、10、11、12、13、14、15、16 .... 24、25、26,它们总共为18条记录。

检查这个出来。

还有官方文件


你是正确的,黑白极限8、18和极限18偏移8有什么区别
吗?阿伦·基卢

26
不,是一样的。LIMIT 8, 18只是一个捷径:)
Mosty Mostacho 2012年

1
最佳答案,因为我也很困惑,我当时以为它返回两位数之间的数据,但现在它很清楚了:)
MR_AMDEV

47

OFFSET 只不过是指示表中起始光标的关键字

SELECT column FROM table LIMIT 18 OFFSET 8 -- fetch 18 records, begin with record 9 (OFFSET 8)

您将获得相同的结果表

SELECT column FROM table LIMIT 8, 18

视觉表示(R以某种顺序是表中的一条记录)

 OFFSET        LIMIT          rest of the table
 __||__   _______||_______   __||__
/      \ /                \ /
RRRRRRRR RRRRRRRRRRRRRRRRRR RRRR...
         \________________/
                 ||
             your result

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.