1

非常に単純です: X で始まる Image というテーブルから前の 10 行を選択したいのですが、通常は次のようになります。

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

ただし、次の 10 行ではなく、X の後の前の 10 行が必要です (したがって、x+1、x+2、x+3 などではなく、x-1、x-2、x-3 などが必要です)。 .)。

これを行う簡単な方法はありますか?

ちなみに、Image には image_id (primary、AI)、image_link、timestamp の 3 つの列があります。

編集:「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 に答える