读书人

根据id和条件查出该信息相邻的上一条、

发布时间: 2013-10-21 17:00:48 作者: rapoo

根据id和条件查出该信息相邻的上一条、下一条
刚才有前辈说没有数据表,所以再开一篇,^_^,等一下一起结掉
http://bbs.csdn.net/topics/390617192

根据currentId和条件查询该信息的上一条或下一条数据信息
数据表信息:
article:id,classid,title,content,userid,addtime,edittime
条件:userid=77 and classid=5
排序条件:edittime desc


[解决办法]
说好的数据呢?
[解决办法]


;With T as (
select row_number() over (order by edittime desc ) as Row ,* from article
)
,T2 AS (
SELECT * FROM t WHERE userid=77 and classid=5
)
--上一条
select * from T where Row = (select Row from T2) -1
UNION ALL
--下一条
select * from T where Row = (select Row from T2) +1

[解决办法]
declare @id int
set @id=xxx
select top 1 * from tb where ID>@id order by Id asc
union all
select top 1 * from tb where ID<@id order by Id desc

[解决办法]
引用:
declare @id int
set @id=xxx
select top 1 * from tb where ID>@id order by Id asc
union all
select top 1 * from tb where ID<@id order by Id desc

支持这种..

--他的代码可作点小修改:

declare @id int
set @id=xx

SELECT * FROM (select top 1 * from tb where id>@id order by id ASC) t1
UNION ALL
SELECT * FROM (select top 1 * from tb where id<@id order by id DESC) t2


如果edittime是唯一的话,2楼的代码,也可以使用。


[解决办法]
select * from article a WHERE EXISTS
(SELECT 1 FROM
(SELECT id FROM article where userid=77 and classid=5) b
WHERE a.id BETWEEN b.id-1 AND b.id+1) order by edittime desc


可以参考这里 http://bbs.csdn.net/topics/390598085

读书人网 >SQL Server

热点推荐