SQL 上一篇下一篇 排序字段(非ID排序)
网上看了很多关于"上一篇下篇"的文章,可大都是按ID排序。实际上,很少有按ID排序的。分享下我的单独排序字段的写法,主要分为ms sql2000 和 ms 2005及以上版本。
SQL 2005及以上版本写法。
declare @currentID int
set @currentID=4
;with temp
as
(
select row_number() over( order by short desc , createtime desc) as rowNum, *
from ch_ItemInformation
)
select * from temp where rowNum in ((select rowNum from temp where id=@currentID)+1)
union all
select * from temp where rowNum in ((select rowNum from temp where id=@currentID)-1)
SQL 200写法
--前提:排序后要唯一,即排序后不能有两条
declare @Num int
set @Num=1
select @Num=@Num+1 from dbo.ch_ItemInformation
where Short>=0 and ID >=10
order by Short desc, ID desc
set @Num=@Num+1
select @Num
select top 3 * from (
select top (select @Num) * from ch_ItemInformation order by Short desc, ID desc
) as a
order by a.Short desc, a.ID desc