zoukankan      html  css  js  c++  java
  • 查询文章的上下篇Sql语句

    直接开入正题

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

    那么查询上下篇的sql语句应该怎么写呢;
    示例数据表:zmd_article
    自增主键:id
    当前文章id:10

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

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

    写出这2句sql后;
    大部分人稍加思索就会发现不妥;
    如果中间删除了几篇;
    那取到的值就成空了?
    这时有人在一旁大喊;
    可以用for循环啊;
    再来个if直到不为空为止;
    不经脑子的随便一想;
    貌似行得通;
    但是作为严谨的程序猿;
    认真思考这个不算方法的方法时候立马发现2个严重的问题;

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

    2. 假设现在一共10篇文章,第11篇就为空了,如果用for就会无限循环下去一直为空;
      如此来说;

    果断是不能这样写了;
    这时又有人在一旁大喊;
    用limit不就可以了;
    正解;

    1 SELECT * FROM zmd_article WHERE id<10 LIMIT 1;     #上一篇
    2 SELECT * FROM zmd_article WHERE id>10 LIMIT 1;     #下一篇

    这就完了吗?
    NO;
    如果用这sql取;
    下一篇没问题了;
    但是上一篇会一直是第一篇文章!
    这时来个倒序即可;

    1 SELECT * FROM zmd_article WHERE id<10 ORDER BY id DESC LIMIT 1;     #上一篇

    感谢大家阅读到这里~~~

  • 相关阅读:
    Day09 约束
    Day08 数据处理
    Day07 创建和管理表
    Day06 子查询
    Appium学习_01(连接、apppackage名查询、appactivity名查询)
    我的读书方法
    Python自动化学习记录
    FineReport帆软报表学习积累
    ERP企业资源管理 详解
    Centos7学习记录
  • 原文地址:https://www.cnblogs.com/zmdComeOn/p/9617601.html
Copyright © 2011-2022 走看看