Respons Alexandr dekat. Saat Anda menanyakan id < 2 LIMIT 1 itu akan mengembalikan 1 , tetapi jika Anda meminta id < 5 LIMIT 1 ini juga akan mengembalikan 1 . Itu karena ia mengembalikan 1, 2, 3, 4 dan mengambil elemen pertama, yaitu 1 daripada 4 yang dibutuhkan .
Cukup tambahkan ORDER BY id DESC untuk mendapatkan item sebelumnya. Ini akan mengembalikan 4, 3, 2, 1 dan LIMIT 1 akan mengembalikan 4 , atau elemen sebelumnya.
$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);