0

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 行、後に 2 行を取得したい。

どのように得ることができますか?

4

2 に答える 2

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

于 2012-07-04T10:11:36.927 に答える
0

考えられる解決策の 1 つ:

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)

前の 2 つを選択するには:

select top 2 *
from tablename
where id < @id
order by id desc

次の 2 つを選択するには:

select top 2 *
from tablename
where id > @id
order by id asc
于 2012-07-04T10:03:13.293 に答える