1

很简单:我想从一个名为 Image 的表中选择前 10 行,从 X 开始。通常,它看起来像:

"select * from image order by image_id desc limit X, 10"

但是,我想要 X 之后的前 10 行,而不是接下来的 10 行(所以,我想要 x-1、x-2、x-3 等而不是 x+1、x+2、x+3 等.)。

有什么简单的方法吗?

顺便说一下,Image 有 3 列:image_id (primary, AI)、image_link 和 timestamp。

编辑:我不能“按 image_id asc 排序”的原因是因为我想建立一个从最新到最旧的列表。按升序排序将创建从最旧到最新的列表。

4

2 回答 2

2

我认为它很简单

select * from image order by image_id desc limit (X-10), 10
于 2012-11-19T07:54:58.053 回答
0

试试这个:

SELECT image_id, name
FROM
(
    SELECT 
      *, @rownum := @rownum + 1 AS rank
    FROM image, (SELECT @rownum := 0) t 
    ORDER BY image_id DESC
) t
WHERE rank BETWEEN  10-5 AND 10;

SQL 小提琴演示

于 2012-11-19T07:52:15.593 回答