Alexandrs Antwort ist nahe. Wenn Sie nach id < 2 LIMIT 1
fragen es wird 1
zurückgegeben , aber wenn Sie nach id < 5 LIMIT 1
fragen dies wird auch 1
zurückgeben . Das liegt daran, dass es 1, 2, 3, 4
zurückgibt und nimmt das erste Element, das 1
ist statt der benötigten 4
.
Fügen Sie einfach ORDER BY id DESC
hinzu um den vorherigen Artikel zu erhalten. Dies gibt 4, 3, 2, 1
zurück und das LIMIT 1
gibt 4
zurück , oder das vorherige Element.
$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);