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