我有一个10行的表
id values
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h
9 i
10 j
我希望在@id = 5之前获得两行,之后获得两行。
怎么弄?
答案 0 :(得分:2)
修改这应该按预期工作(希望如此):
select id, value
from [table]
where id-@id >= -2
AND id-@id <= 2
AND id-@id <> 0
这是正在运行的sql:http://sqlfiddle.com/#!6/ca4e5/3/0
答案 1 :(得分:0)
一种可能的解决方案:
select *
from table
where id in (3, 4, 6, 7)
如果你使用的是int变量@id,你可以这样做:
select *
from table
where id in (@id-2, @id-1, @id+1, @id+2)
选择前两个:
select top 2 *
from tablename
where id < @id
order by id desc
选择接下来的两个:
select top 2 *
from tablename
where id > @id
order by id asc