查询文章的上下篇Sql语句

文章上下篇功能在内容页常见,但简单的ID加减法可能存在因删除导致的错误。通过for循环解决问题则浪费资源,可能导致无限循环。使用LIMIT虽能获取下一篇文章,但无法正确获取上一篇。解决方案是结合ORDER BY与LIMIT,正序获取下篇,倒序获取上篇。
摘要由CSDN通过智能技术生成



本来觉得这个查询不用大动干戈的洋洋洒洒写一篇文章的;不过看到不少人在这栽跟头;还是简单总结下吧;

文章内容页一般都会有上一篇和下一篇的功能;

白俊遥博客

那么查询上下篇的sql语句应该怎么写呢;

示例数据表:bjy_article

  自增主键:id

当前文章id:10

肯定会有童鞋是说,这简单啊id+1和id-1不就OK了;sql无非如下:

SELECT * FROM bjy_article WHERE id=10-1;     #上一篇
SELECT * FROM bjy_article WHERE id=10+1;     #下一篇

写出这2句sql后;大部分人稍加思索就会发现不妥;如果中间删除了几篇,那取到的值就成空了?

这时有人在一旁大喊;可以用for循环啊,再来个if直到不为空为止;

不经脑子的随便一想;貌似行得通;但是作为严谨的程序猿,认真思考这个不算方法的方法时候立马发现2个严重的问题;

1:我只是想取上一篇文章;结果来了个for查询了NNNN次,严重浪费资源;

2:假设现在一共10篇文章,第11篇就为空了,如果用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值