Câu trả lời của Alexandr là gần. Khi bạn truy vấn id < 2 LIMIT 1
nó sẽ trả về 1
, nhưng nếu bạn truy vấn id < 5 LIMIT 1
điều này cũng sẽ trả về 1
. Đó là vì nó trả về 1, 2, 3, 4
và lấy phần tử đầu tiên, là 1
chứ không phải là 4
cần thiết .
Chỉ cần thêm ORDER BY id DESC
để lấy mục trước. Điều này sẽ trả về 4, 3, 2, 1
và LIMIT 1
sẽ trả về 4
hoặc phần tử trước đó.
$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);