sql >> Base de Datos >  >> RDS >> Mysql

Cómo seleccionar un elemento, el de abajo y el de arriba en MYSQL

Aquí hay otra forma de hacerlo usando UNION s. Creo que esto es un poco más fácil de entender y más flexible que la respuesta aceptada. Tenga en cuenta que el ejemplo asume el id el campo es único, lo que parece ser el caso según su pregunta.

La consulta SQL a continuación asume que su tabla se llama demo y tiene un único id y la tabla se completó con los valores que enumeró en su pregunta.

( 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 el siguiente resultado:b03, d01, d02 .

Esta solución es flexible porque puede cambiar cada uno de los LIMIT 1 declaraciones a LIMIT N donde N es cualquier número. De esa manera, puede obtener las 3 filas anteriores y las siguientes 6 filas, por ejemplo.