2

最近、最後の3つの結果を正しい順序でテーブルに表示することについての質問を投稿しました。最後の3つ以外のすべてのコメントを正しい順序で取得したいと思います。

これが私の構文です。

SELECT *
FROM (SELECT * 
      FROM $table 
      ORDER BY ID DESC 
      OFFSET 3) AS T 
ORDER BY TIME_STAMP

私が受け取っているエラーは次のとおりです。

SQL構文にエラーがあります。1行目の「OFFSET、3)AS T ORDER BY TIME_STAMP」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

私はそれを機能させることができないようです。どんな助けでも大歓迎です。

4

3 に答える 3

8

MySQLドキュメントによると:

特定のオフセットから結果セットの最後までのすべての行を取得するには、2番目のパラメーターに大きな数値を使用できます。このステートメントは、96行目から最後の行までのすべての行を取得します。

次のようなクエリを使用することをお勧めします。

SELECT * FROM tbl LIMIT 95,18446744073709551615;

したがって、あなたの場合は、次のことを試してください。

SELECT *
FROM (SELECT * 
      FROM $table 
      ORDER BY ID DESC 
      LIMIT 3,18446744073709551615) AS T 
ORDER BY TIME_STAMP

キーワードを使用してPostgreSQL互換バージョンを使用することもできることに注意してくださいOFFSET

SELECT *
FROM (SELECT * 
      FROM $table 
      ORDER BY ID DESC 
      LIMIT 18446744073709551615 OFFSET 3) AS T 
ORDER BY TIME_STAMP

あなたが疑問に思っている場合に備えて、18446744073709551615 = 2^64 - 1

于 2010-06-17T07:28:10.920 に答える
5

LIMITなしでOFFSETを使用することはできません。

少しかさばりますが、そのクエリは私にとっては機能し、冗長な内部サブクエリ(mysql 5.0.90)なしでは機能しませんでした

select * from $table 
where id not in (
  select id from (
    select id from languages order by id DESC LIMIT 3
  ) l1
) order by time_stamp
于 2010-06-17T07:23:02.597 に答える
0

私がコピーしたので同じ問題がありました:

OFFSET :offset LIMIT :limit

Postgresで有効な既存のクエリから。

どうやらMySQLでは順序が重要なので、順序を逆にすることでうまくいきました。

LIMIT :limit OFFSET :offset 
于 2019-08-22T02:18:36.290 に答える