Alexandrova odpověď je blízko. Při dotazu na id < 2 LIMIT 1
vrátí 1
, ale pokud zadáte dotaz na id < 5 LIMIT 1
to také vrátí 1
. Je to proto, že vrací 1, 2, 3, 4
a vezme první prvek, což je 1
spíše než potřebné 4
.
Stačí přidat ORDER BY id DESC
získat předchozí položku. To vrátí 4, 3, 2, 1
a LIMIT 1
vrátí 4
, nebo předchozí prvek.
$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);