sqlserver获取当前id的前一条数据和后一条数据

一、条件字段为数值的情况
 
select  from  tb  where  id=@id;  --当前记录
 
select  top  1 *  from  tb  where  id>@id  order  by  id;  --下一条记录
 
select  top  1 *  from  tb  where  id<@id  order  by  id  desc  --上一条记录
 
 
二、以排序的思路出发的一种方案
 
; WITH  TUsers  AS 
(
     SELECT  *, ROW_NUMBER() OVER ( ORDER  BY  vcUserID)  AS  _ROW
     FROM  DB_Fast_Users.dbo.T_Users  AS  A(NOLOCK)
)
SELECT  *
into  #T
FROM  TUsers 
 
-- 上一条
select  B.*
from  #T  AS  A(NOLOCK)
left  join  #T  AS  B(NOLOCK)  ON  B._ROW = (A._ROW - 1)
where  A.vcUserID= 'Test1'
 
-- 下一条
select  B.*
from  #T  AS  A(NOLOCK)
left  join  #T  AS  B(NOLOCK)  ON  B._ROW = (A._ROW + 1)
where  A.vcUserID= 'Test1'
 
drop  table  #T

转载于:https://www.cnblogs.com/Michael-W/p/3738242.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值