首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

根据id和条件查出该信息相邻的上一条、下一条解决思路

2013-10-21 
根据id和条件查出该信息相邻的上一条、下一条刚才有前辈说没有数据表,所以再开一篇,^_^,等一下一起结掉http

根据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

热点排行