Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Doktrin - Holen Sie sich den nächsten und den vorherigen Datensatz

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);