Mysql
 sql >> Database >  >> RDS >> Mysql

Come selezionare un elemento, quello sotto e quello sopra in MySQL

Ecco un altro modo per farlo usando UNION S. Penso che questo sia un po 'più facile da capire e più flessibile della risposta accettata. Nota che l'esempio presuppone l'id il campo è unico, il che sembra essere il caso in base alla tua domanda.

La query SQL di seguito presuppone che la tua tabella si chiami demo e ha un unico id campo e la tabella è stata compilata con i valori che hai elencato nella tua domanda.

( 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

Produce il seguente risultato:b03, d01, d02 .

Questa soluzione è flessibile perché puoi modificare ciascuno dei LIMIT 1 istruzioni a LIMIT N dove N è un numero qualsiasi. In questo modo puoi ottenere, ad esempio, le 3 righe precedenti e le 6 righe successive.