Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como selecionar um item, o abaixo e o acima no MYSQL


Aqui está outra maneira de fazer isso usando UNION s. Eu acho que isso é um pouco mais fácil de entender e mais flexível do que a resposta aceita. Observe que o exemplo assume o id campo é único, o que parece ser o caso com base na sua pergunta.

A consulta SQL abaixo assume que sua tabela é chamada demo e tem um único id exclusivo campo e a tabela foi preenchida com os valores listados em sua pergunta.
( 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

Ele produz o seguinte resultado:b03, d01, d02 .

Esta solução é flexível porque você pode alterar cada um dos LIMIT 1 instruções para LIMIT N onde N é qualquer número. Dessa forma, você pode obter as 3 linhas anteriores e as 6 linhas seguintes, por exemplo.