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

doctrine - obtenir l'enregistrement suivant et précédent

La réponse d'Alexandr est proche. Lorsque vous recherchez id < 2 LIMIT 1 il renverra 1 , mais si vous recherchez id < 5 LIMIT 1 cela renverra également 1 . C'est parce qu'il renvoie 1, 2, 3, 4 et prend le premier élément, qui est 1 plutôt que les 4 nécessaires .

Ajoutez simplement ORDER BY id DESC pour obtenir l'élément précédent. Cela renverra 4, 3, 2, 1 et le LIMIT 1 renverra 4 , ou l'élément précédent.

$query = $em->createNativeQuery('SELECT id FROM users WHERE
        id = (SELECT id FROM users WHERE id > 2 LIMIT 1)
        OR
        id = (SELECT id FROM users WHERE id < 2 ORDER BY id DESC LIMIT 1)', $rsm);