UNIONを使用してこれを行う別の方法があります s。これは、受け入れられた答えよりも少し理解しやすく、柔軟性があると思います。この例では、idを想定していることに注意してください。 フィールドは一意であり、あなたの質問に基づいているようです。
以下のSQLクエリは、テーブルの名前がdemoであることを前提としています。 一意のidが1つあります フィールドに入力すると、質問にリストした値がテーブルに入力されます。
( SELECT id FROM demo WHERE STRCMP ( 'd01', id ) > 0 ORDER BY id DESC LIMIT 1 )
UNION ( SELECT id FROM demo WHERE id = 'd01' ORDER BY id ) UNION
( SELECT id FROM demo WHERE STRCMP ( 'd01', id ) < 0 ORDER BY id ASC LIMIT 1 )
ORDER BY id
次の結果が生成されます:b03, d01, d02 。
このソリューションは、各LIMIT 1を変更できるため、柔軟性があります。 LIMIT Nへのステートメント ここで、N 任意の数です。そうすれば、たとえば、前の3行と次の6行を取得できます。