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

doutrina - obter o próximo e registro anterior


A resposta de Alexandr está próxima. Quando você consulta por id < 2 LIMIT 1 ele retornará 1 , mas se você consultar id < 5 LIMIT 1 isso também retornará 1 . Isso porque ele retorna 1, 2, 3, 4 e pega o primeiro elemento, que é 1 em vez do necessário 4 .

Basta adicionar ORDER BY id DESC para obter o item anterior. Isso retornará 4, 3, 2, 1 e o LIMIT 1 retornará 4 , ou o 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);