【发布时间】:2012-04-12 07:30:41
【问题描述】:
在下面的查询中:
SELECT column
FROM table
LIMIT 18 OFFSET 8
我们将获得多少结果作为输出以及从哪里到哪里?
【问题讨论】:
-
订单需要先限制,然后偏移。如果不是,它会抛出一个错误。
标签: mysql
在下面的查询中:
SELECT column
FROM table
LIMIT 18 OFFSET 8
我们将获得多少结果作为输出以及从哪里到哪里?
【问题讨论】:
标签: mysql
它将返回 18 个结果,从记录 #9 开始,到记录 #26 结束。
首先从offset 读取查询。首先你偏移 8,这意味着你跳过了查询的前 8 个结果。然后限制为 18。这意味着您考虑记录 9、10、11、12、13、14、15、16....24、25、26,总共 18 条记录。
签出this。
【讨论】:
LIMIT 8, 18 只是一个捷径 :)
LIMIT 8, 0;如果我们将SELECT * FROM table LIMIT 8, 0 与SELECT * FROM table LIMIT 8 OFFSET 0 进行比较,第一个将不会像您预期的那样选择8 条记录。相反,它将返回 0 记录,因为 limit construction 是以下 LIMIT [offset,] row_count see here 但第二个(带有 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
【讨论】:
您将获得从 column 值 9 到 26 的输出,正如您提到的 OFFSET 为 8
【讨论】:
Offset 主要用于支持 MySql SELECT 语句中的分页。 首先执行查询,然后返回偏移量之后的记录。
例如:假设您想按照评分顺序(最高优先)在每页显示产品的 10 条评论,然后可以使用下面的查询来获取评论,这些评论将是显示在第三页:
Select * from Reviews where productid= order by rating desc LIMIT 10 OFFSET 20。
【讨论】:
它将跳过前 8 条记录并显示从 9 到 26 的记录
limit 18 : 显示/选择 18 条记录
offset 8 : 将跳过 8 条记录
如果您的表有 1,2,3,4,5,6,7,8,9,10,11.... 之类的 id,那么 1 to 8 记录将被跳过,9 to 26 之后的记录将被显示/选择,即 18 条记录。
【讨论】: