Alexandrs svar er tæt på. Når du forespørger efter id < 2 LIMIT 1
det vil returnere 1
, men hvis du forespørger efter id < 5 LIMIT 1
dette vil også returnere 1
. Det er fordi den returnerer 1, 2, 3, 4
og tager det første element, som er 1
i stedet for den nødvendige 4
.
Bare tilføj ORDER BY id DESC
for at få den forrige vare. Dette vil returnere 4, 3, 2, 1
og LIMIT 1
returnerer 4
, eller det forrige 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);