1

「前へ」ボタンと「次へ」ボタンを作成しようとしています。SQL ステートメントによって生成される最後の前のレコードと次のレコードが 1 つずつ表示されます。

ただし、ID は単純に -1 と +1 ではありません。つまり、このレコード ID が 40 の場合、前の ID は 31 で、次の ID は 43 になる可能性があります。

この目標を達成できるSQL関数はありますか? ありがとう!

4

2 に答える 2

8

次の ID の選択:

SELECT * FROM your_table WHERE your_id>$current_id ORDER BY your_id ASC LIMIT 1

前の ID の選択:

SELECT * FROM your_table WHERE your_id<$current_id ORDER BY your_id DESC LIMIT 1
于 2012-08-16T06:14:44.260 に答える
0

limit句を使用して、スキップするレコードの数を追跡する必要があります。

たとえば、レコード10にいる場合はlimit 10,1、最初の10をスキップして、1つ戻します。「次へ」ボタンは、クエリをに変更しますlimit 11,1

知っているorder by(この場合はIDフィールドが完璧に見える)限り、データは毎回まったく同じ順序で返されるため、結果セットを一度に1行ずつ確実に前後に移動できます。

ドキュメントから抜粋:

LIMIT句を使用して、SELECTステートメントによって返される行数を制限できます。LIMITは、1つまたは2つの数値引数を取ります。これらは両方とも非負の整数定数でなければなりません(プリペアドステートメントを使用する場合を除く)。

2つの引数を使用すると、最初の引数は返される最初の行のオフセットを指定し、2番目の引数は返される行の最大数を指定します。最初の行のオフセットは0(1ではありません)です。

SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15

于 2012-08-16T06:13:27.543 に答える