sql语句查询,某一记录上下相邻的两条记录。怎么写?

例如:在news表中,查找news_id=12345的新闻的上线两条新闻,怎么写?在news表中,查找news_id=12345的新闻的上下两条新闻,怎么写?... 例如:在news表中,查找news_id=12345的新闻的上线两条新闻,怎么写?
在news表中,查找news_id=12345的新闻的上下两条新闻,怎么写?
展开
 我来答
百度网友4efe45b
2012-07-05 · TA获得超过441个赞
知道小有建树答主
回答量:266
采纳率:100%
帮助的人:298万
展开全部
select * from news a
where news_id > 12345 and not exists(select 1 from news where news_id > 12345 and
news_id < a.id )
or
news_id < 12345 and not exists(select 1 from news where news_id < 12345 and
news_id > a.id )

如果不需要用一条语句写出来,那分开写的话,效率会好一些,这样写必须用一个or关键字
分开写:
select max(news_id) from news where news_id < 12345
select min(news_id) from news where news_id > 12345
hitomishinya
2012-07-05 · TA获得超过1111个赞
知道小有建树答主
回答量:376
采纳率:0%
帮助的人:144万
展开全部
news_id 是 int 吗?
是的话:
select * from news where news_id =12345+1 or news_id=12345-1

12345应该是传进来的值吧
select * from news where news_id = 变量+1 or news_id=变量-1
追问
news_id 不连续。。。
追答
select * from (select top 1 * from news where news_id3 order by news_id)b
姐的效率高呀,啧啧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hwt87802887
2012-07-05 · TA获得超过194个赞
知道小有建树答主
回答量:606
采纳率:50%
帮助的人:258万
展开全部
简单的:
select Top 1 * from ID Where news_id>12345

select Top 1 * from ID Where news_id<12345
追问
这个能查到 12345后一条记录,和表的第一条记录
追答
后面加个排序规则就行了。自己拓展一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
BraveHeart_Fov
2012-07-05 · TA获得超过7942个赞
知道小有建树答主
回答量:1037
采纳率:0%
帮助的人:684万
展开全部
排序规则是什么? 时间?ID?
追问
ID不是连续的,但是是从小到大的
追答
是这个意思?
select * from news where news_id=ID+1 or news_id=ID-1
select top 1 * from news where news_id in (select top 1 news_id from news where news_idID order by news_id )
order by news_id
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式