--上一條
select * from tb where id=(select max(id) from tb where id <2)
--下一條
select * from tb where id=(select min(id) from tb where id>2)

or

--上一条
select top 1 * from test where id<2 order by id desc
--下一条
select top 1 * from test where id>2 order id

*******************************一个例子

id int 自增长
name nvarchar(20)
paixu int

id  name  paixu
1  aa    1
2  bb    2
5  cc    3
6  dd    5

select * from test where id=2 查询出一条固定的语句

我想查出他的上一条,下一条
并实现paixu的数字的改变

例如:查出的id为2的排序为2,把id为2 的和5的排序号调换一下

--上一条
select top 1 * from test where id<2 order by id desc
--下一条
select top 1 * from test where id>2 order id

--调换排序号
declare @id int,@id1 int,@paixu
set @id=2
--查出下一条id号
if exists(select * from test where id>@id)
begin
   
set @id1=(select top 1 id from test where id>@id order by id) --交换排序号
    select @paixu=paixu from test where id=@id
   
update test set paixu=(select paixu from test where id=@id1) where id=@id   --将@id1的排序号更新到@id行
    update test set paixu=@paixu where id=@id1 --更新@id1行的排序号
end

posted on 2008-10-09 12:32  自己  阅读(3172)  评论(0编辑  收藏  举报