查询文章的上下篇Sql语句

本来觉得这个查询不用大动干戈的洋洋洒洒写一篇文章的;不过看到不少人在这栽跟头;还是简单总结下吧;文章内容页一般都会有上一篇和下一篇的功能; 那么查询上下篇的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篇就为空了,如果用for就会无限循环下去一直为空; 如此来说;果断是不能这样写了;这时又有人在一旁大喊;用limit不就可以了;正解; SELECT * FROM bjy_article WHERE id<10 LIMIT 1; #上一篇 SELECT * FROM bjy_article WHERE id>10 LIMIT 1; #下一篇 这就完了吗? NO; 如果用这sql取; 下一篇没问题了; 但是上一篇会一直是第一篇文章! 这时来个倒序即可; SELECT * FROM bjy_article WHERE id<10 ORDER BY id DESC LIMIT 1; #上一篇
联系我们

邮箱 626512443@qq.com
电话 18611320371(微信)
QQ群 235681453

Copyright © 2015-2022

备案号:京ICP备15003423号-3