アレクサンドルの反応は近いです。 id < 2 LIMIT 1
をクエリする場合 1
を返します 、ただし、id < 5 LIMIT 1
をクエリする場合 これも1
を返します 。これは、1, 2, 3, 4
を返すためです。 最初の要素である1
を取ります 必要な4
ではなく 。
ORDER BY id DESC
を追加するだけです 前のアイテムを取得します。これにより、4, 3, 2, 1
が返されます。 およびLIMIT 1
4
を返します 、または前の要素。
$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);