在 MySQL 中使用 LIMIT 和 OffSET 时返回哪些行?

在下面的查询中:

SELECT column
FROM table
LIMIT 18 OFFSET 8

我们将得到多少结果作为输出,从哪里到哪里?

169265 次浏览

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

首先从 offset读取查询。首先偏移8,这意味着跳过查询的前8个结果。然后你限制在18。这意味着你考虑的记录9,10,11,12,13,14,15,16... . 24,25,26总共是18个记录。

看看 这个

还有 正式文件

您将得到从 column值9到26的输出,正如您提到的 OFFSET为8

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

偏移量主要用于支持 MySqlSELECT 语句中的分页。 首先执行查询,然后返回偏移量之后的记录。

例如 : 假设你想按照排名顺序(最高排名第一)显示一个产品的每页10条评论,那么下面的查询可以用来获得将在第三页显示的评论:

选择 * from Reviews where productid = order by atings desc LIMIT 10 OffSET 20。

它将跳过前8条记录,并显示从9条到26条的记录

limit 18: 显示/选择18条记录

将跳过8个记录

如果您的表有像 1,2,3,4,5,6,7,8,9,10,11....等等的 id,那么 1 to 8记录将被跳过,而 9 to 26之后的记录将显示/选择18条记录。