如何在表中为给定的id前后获取两行?

时间:2012-07-04 10:02:17

标签: sql-server sql-server-2008

我有一个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之前获得两行,之后获得两行。

怎么弄?

2 个答案:

答案 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