【问题标题】:MySQL get Offset given Limit, Order By, and Where IDMySQL 获取 Offset 给定的 Limit、Order By 和 Where ID
【发布时间】:2012-02-27 06:57:33
【问题描述】:

我有一个每页显示 10 行的表格。现在,给定一个项目的 ID,我怎样才能获得该项目所在的“页面”?

换句话说,我正在寻找给定记录 ID 的偏移量(10 的倍数)。

SELECT * FROM items
WHERE category = "category"
LIMIT ?, 10      <----- TRYING TO FIGURE OUT HOW TO GET ? OFFSET GIVEN ID
ORDER BY id DESC

【问题讨论】:

    标签: mysql pagination limit offset


    【解决方案1】:

    应该这样做;

    SELECT 10*FLOOR(COUNT(id)/10) FROM items where id < YOUR_ID
    

    【讨论】:

    • SELECT 返回的项目顺序在形式上是不可预测的,所以这不一定有效。
    【解决方案2】:

    试试这个:

    SET @rownum = 0; 
    Select sub.*, 10 * Floor(sub.rownum / 10) as pagenum
    from
    (
       Select *,  (@rownum:=@rownum+1) as rownum
       from items order by id desc
    ) sub
    where sub.ID = givenID;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      相关资源
      最近更新 更多