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行を取得できます。