Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment sélectionner un élément, celui du dessous et celui du dessus dans MYSQL

Voici une autre façon de le faire en utilisant UNION s. Je pense que c'est un peu plus facile à comprendre et plus flexible que la réponse acceptée. Notez que l'exemple suppose le id champ est unique, ce qui semble être le cas d'après votre question.

La requête SQL ci-dessous suppose que votre table s'appelle demo et a un seul id unique champ, et le tableau a été rempli avec les valeurs que vous avez énumérées dans votre question.

( 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

Il produit le résultat suivant :b03, d01, d02 .

Cette solution est flexible car vous pouvez modifier chacun des LIMIT 1 déclarations à LIMIT NN est n'importe quel nombre. De cette façon, vous pouvez obtenir les 3 lignes précédentes et les 6 lignes suivantes, par exemple.