Отговорът на Александър е близо. Когато правите заявка за id < 2 LIMIT 1
ще върне 1
, но ако подадете заявка за id < 5 LIMIT 1
това също ще върне 1
. Това е така, защото връща 1, 2, 3, 4
и приема първия елемент, който е 1
вместо необходимия 4
.
Просто добавете ORDER BY id DESC
за да получите предишния артикул. Това ще върне 4, 3, 2, 1
и LIMIT 1
ще върне 4
, или предишния елемент.
$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);