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

doctrina - obtener el registro siguiente y anterior

La respuesta de Alexandr está cerca. Cuando consulta por id < 2 LIMIT 1 devolverá 1 , pero si consulta id < 5 LIMIT 1 esto también devolverá 1 . Eso es porque devuelve 1, 2, 3, 4 y toma el primer elemento, que es 1 en lugar del 4 necesario .

Simplemente agregue ORDER BY id DESC para obtener el elemento anterior. Esto devolverá 4, 3, 2, 1 y el LIMIT 1 devolverá 4 , o el elemento anterior.

$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);