Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So wählen Sie ein Element aus, das untere und das obere in MYSQL

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.