在单个查询中查找mysql表中某个条目的左侧和右侧的条目


find entries to the left and right of a certain entry in a mysql table in a single query

假设数据库中有这样一个表。假设我想要得到主键等于5(或任何其他主键)的项左右的项。在我们的例子中,我想要得到主键分别等于4和6的元素。什么SQL查询会给我这样的结果?你们能把SQL查询翻译成查找('all') CakePHP查询吗?

谢谢

注意:id不一定是连续的,也就是说,它们不一定遵循1,2,3,4,5,6,7,8的顺序。比如1 5 13 44 66 123等等

像这样尝试合并

 (SELECT * FROM employee WHERE id < 5 order by id DESC LIMIT 1)
 UNION
 (SELECT * FROM employee WHERE id >5  LIMIT 1)

PHP

$id = 5;
SELECT * FROM Employee where id = $id-1 OR id = $id+1;
MySQL

SET @id = 5;
SELECT * FROM Employee where id = @id-1 OR id = @id+1;

Checkout find('neighbors')。它返回您指定的之前和之后的记录,并且您的id可以在序列中有"洞"。