Hier ist eine andere Möglichkeit, dies mit UNION
zu tun s. Ich denke, das ist etwas einfacher zu verstehen und flexibler als die akzeptierte Antwort. Beachten Sie, dass das Beispiel von der id
ausgeht Das Feld ist eindeutig, was aufgrund Ihrer Frage der Fall zu sein scheint.
Die folgende SQL-Abfrage geht davon aus, dass Ihre Tabelle demo
heißt und hat eine einzige eindeutige id
Feld und die Tabelle wurde mit den Werten gefüllt, die Sie in Ihrer Frage angegeben haben.
( 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
Es erzeugt das folgende Ergebnis:b03, d01, d02
.
Diese Lösung ist flexibel, da Sie jedes der LIMIT 1
ändern können Anweisungen auf LIMIT N
wobei N
ist eine beliebige Zahl. So erhalten Sie beispielsweise die vorherigen 3 Zeilen und die folgenden 6 Zeilen.