一般的文章系统都带一个上一条 下一条 的链接,这里抄一个快速查询的方法
示例数据表: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个严重的问题; 果断是不能这样写了;
这时又有人在一旁大喊;
用limit不就可以了;
正解; - SELECT * FROM article WHERE id<10 LIMIT 1; #上一篇
- SELECT * FROM article WHERE id>10 LIMIT 1; #下一篇
复制代码
这就完了吗? NO;
如果用这sql取;
下一篇没问题了;
但是上一篇会一直是第一篇文章!
这时来个倒序即可; - SELECT * FROM article WHERE id<10 ORDER BY id DESC LIMIT 1; #上一篇
复制代码
转自 https://baijunyao.com/article/27
|