Het antwoord van Alexandr is dichtbij. Wanneer u zoekt naar id < 2 LIMIT 1
het retourneert 1
, maar als u zoekt naar id < 5 LIMIT 1
dit levert ook 1
op . Dat komt omdat het 1, 2, 3, 4
. teruggeeft en neemt het eerste element, dat is 1
in plaats van de benodigde 4
.
Voeg gewoon ORDER BY id DESC
. toe om het vorige item te krijgen. Dit levert 4, 3, 2, 1
. op en de LIMIT 1
retourneert 4
, of het vorige 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);