4

これを行う適切な方法はありますか?

ID | name
 1 | aa
 4 | bb
 6 | dd
 9 | ee

IDはauto_incrementを持つプライマリインデックスです...欠落しているインデックスはSQLによって削除されたため、いくつかの空のスペースがあります

ページ内を移動する場合ID=4同じクエリを使用して前の行(ID 1)と次の行(ID 6)(追加:)を取得したい

結果セット全体を選択/トラバースせずにこれを行う方法はありますか?

前もって感謝します!

4

3 に答える 3

3

私はこのようなことをします(前の記録のために):

SELECT * FROM table
WHERE id < @id
ORDER BY id DESC
LIMIT 1

これは、DBエンジンがクエリを最適化するのに十分な情報である必要があります。

于 2012-04-11T10:30:17.337 に答える
3
SELECT * from table where `ID` > 4 ORDER BY `ID` ASC LIMIT 1 /* next */
SELECT * from table where `ID` < 4 ORDER BY `ID` DESC LIMIT 1 /* previous */
于 2012-04-11T10:30:42.233 に答える
2

試してみる-

(SELECT * FROM table_name
WHERE id < 4
ORDER BY id DESC
LIMIT 1)
union 
(SELECT * FROM table_name
WHERE id > 4
ORDER BY id ASC
LIMIT 1)
于 2012-04-11T10:38:58.617 に答える