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