Mysql
 sql >> Database >  >> RDS >> Mysql

dottrina:ottieni il record successivo e precedente

La risposta di Alexandr è vicina. Quando esegui una query per id < 2 LIMIT 1 restituirà 1 , ma se esegui una query per id < 5 LIMIT 1 questo restituirà anche 1 . Questo perché restituisce 1, 2, 3, 4 e prende il primo elemento, che è 1 anziché il necessario 4 .

Basta aggiungere ORDER BY id DESC per ottenere l'elemento precedente. Questo restituirà 4, 3, 2, 1 e il LIMIT 1 restituirà 4 , o l'elemento precedente.

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