【问题标题】:Which rows are returned when using LIMIT with OFFSET in MySQL?在 MySQL 中使用 LIMIT 和 OFFSET 时返回哪些行?
【发布时间】:2012-04-12 07:30:41
【问题描述】:

在下面的查询中:

SELECT column 
FROM table
LIMIT 18 OFFSET 8

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

【问题讨论】:

  • 订单需要先限制,然后偏移。如果不是,它会抛出一个错误。

标签: mysql


【解决方案1】:

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

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

签出this

还有official documentation

【讨论】:

  • 你是正确的,黑白限制8,18和限制18偏移8有什么区别
  • 不,是一样的。 LIMIT 8, 18 只是一个捷径 :)
  • 最佳答案,因为我也很困惑,我认为它返回两位数之间的数据,但现在它清楚了:)
  • 但要小心LIMIT 8, 0;如果我们将SELECT * FROM table LIMIT 8, 0SELECT * FROM table LIMIT 8 OFFSET 0 进行比较,第一个将不会像您预期的那样选择8 条记录。相反,它将返回 0 记录,因为 limit construction 是以下 LIMIT [offset,] row_count see here 但第二个(带有 OFFSET 关键字的那个)示例将返回 8 记录。当然,如果您的数据库中有这些记录。
【解决方案2】:

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

【讨论】:

  • 很棒的可视化!
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

    例如:假设您想按照评分顺序(最高优先)在每页显示产品的 10 条评论,然后可以使用下面的查询来获取评论,这些评论将是显示在第三页:

    Select * from Reviews where productid= order by rating desc LIMIT 10 OFFSET 20。

    【讨论】:

      【解决方案5】:

      它将跳过前 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 条记录。

      【讨论】:

        猜你喜欢
        • 2013-12-20
        • 2020-08-19
        • 1970-01-01
        • 2019-12-24
        • 2020-12-30
        • 1970-01-01
        • 2012-10-06
        • 2017-12-25
        • 2012-08-25
        相关资源
        最近更新 更多