选择2个前一个和下一个2个记录,其中一个记录

时间:2013-05-20 22:36:53

标签: mysql

示例:

ID  catID
1     3
2     2
3     3
4     1
5     3
6     3
7     3
8     1
9     3

select * from tbl where ID=5

我如何选择记录1,3,6,7?这是需要时间的东西吗,我的意思是查询/子查询?

目前我选择整个集合然后使用服务器脚本排序,这就是为什么我要问是否可以用mysql选择5条记录......或者我不应该打扰

感谢

2 个答案:

答案 0 :(得分:1)

如果您的记录按ID排序,则可以使用如下查询:

(SELECT *
FROM yourtable
WHERE ID<5 AND catID=(SELECT catID FROM yourtable WHERE ID=5)
ORDER BY ID DESC
LIMIT 2)
UNION ALL
(SELECT *
FROM yourtable
WHERE ID>5 AND catID=(SELECT catID FROM yourtable WHERE ID=5)
ORDER BY ID
LIMIT 2)

请参阅小提琴here

答案 1 :(得分:0)

select * from tbl where catID = 3;

这是你问的问题的答案吗?

select *
from tbl
where  (0 < (id - x) and (id - x) <= 2)
    or (0 < (x - id) and (x - id) <= 2);