直接开入正题

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

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

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

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

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

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

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

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

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

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

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

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

查询文章的上下篇Sql语句的更多相关文章

  1. 《万能数据库查询分析器》实现使用SQL语句直接高效地访问文本文件

    <万能数据库查询分析器>实现使用SQL语句直接高效地访问文本文件 马根峰 (广东联合电子服务股份有限公司, 广州 510300) 摘要    用SQL语句来直接访问文本文件?是在做梦吗? ...

  2. oracle 查询最近执行过的 SQL语句(转载)

    oracle 查询最近执行过的 SQL语句 (2014-06-09 18:02:43) 转载▼   分类: Database oracle 查询最近执行过的 SQL语句 select sql_text ...

  3. Hibernate原生SQL查询多表关联,SQL语句要注意的问题

    Hibernate原生SQL查询多表关联,SQL语句要注意的问题 @for&ever 2009-9-4 系统环境: MySQL5.1 Hibernate3.3 有如下的假定: 实体类 Ques ...

  4. sql server 查询性能最差的sql语句

    SELECT TOP 10 TEXT AS 'SQL Statement' ,last_execution_time AS 'Last Execution Time' ,(total_logical_ ...

  5. oracle 查询最近执行过的 SQL语句

    oracle 查询最近执行过的 SQL语句 select sql_text,last_load_time from v$sql order by last_load_time desc;   SELE ...

  6. 关于在页面上执行sql语句

    在页面上执行sql语句,首先在页面上顶一个文本域,让用户输入需要执行的sql语句. html代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML ...

  7. 查询Oracle正在执行的sql语句

    --查询Oracle正在执行的sql语句及执行该语句的用户 SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, ...

  8. 查询系统正在运行的SQL语句

    查询系统正在运行的SQL语句: select a.program, b.spid, c.sql_text from v$session a, v$process b, v$sqlarea c wher ...

  9. 转载:SQL Server中查询CPU占用高的SQL语句

    SQL Server中查询CPU占用高的SQL语句 SQL Server 表变量的用法 究竟什么是敏捷测试--朱少民

随机推荐

  1. 浅析B/S架构数据库连接方式

    前言 在许许多多的B/S架构系统中都涉及到了数据库的链接,那么对于数据库连接的方式有哪些?可能出现的问题是什么?   目录 1.普通连接方式 2.单例模式 3.连接池   分析 普通连接: 下面是我们 ...

  2. nginx安装配置并布置网站

    之前做的网站都是用的apache,关于apache和Nginx的区别也不说了,百度上也都有,而且apche和nginx可以共存,这个之后再说. 首先安装nginx,我用的云主机,直接用yum安装 #y ...

  3. 微信昵称的emoji的尝试性解决方案

    概述 之前分享过前端页面使用emoji,讨论了前端页面使用emoji的方法,但是微信昵称中的emoji怎么获取和显示呢?我查找了一些资料,把心得记录下来,供以后开发时参考,相信对其他人也有用. 转码问 ...

  4. rabbitmq在ios中实战采坑

    1. rabbitmq在ios中实战采坑 1.1. 问题 ios使用rabbitmq连接,没过多久就断开,并报错.且用android做相同的步骤并不会报错,错误如下 Received connecti ...

  5. pycharm安装plugins

    1 . 启动 PyCharm 软件 2 . 打开 设置(Setting) 窗口.(操作:File -> Setting 或者 按快捷键 Ctrl + Alt + S) 3 . 在搜索框里面搜索: ...

  6. css、css3总结

    关于figure元素和figcaption元素的解释与应用: https://www.w3cplus.com/html5/quick-tip-the-right-way-to-use-figure-a ...

  7. Android利用Intent与其他应用交互

    前言: 上一篇博客给大家聊了Intent的定义,分类.属性和功能,相信大家对于Intent在Android中的作用已经清楚,这一篇博客将会给大家聊Intent的用法. Android系统的一个重要特性 ...

  8. linux 命令 — cut

    cut 以列的方式格式化输出 依赖定界符 cut -f field_list filename 以默认定界符(tab,制表符)分割文件的列,输出指定的列field_list,field_list由列号 ...

  9. 解释代码((n & (n-1))== 0)的含义

    思路:初步查看很难一眼分析出表达式是什么含义,我们不妨举例分析一下,假设 n = 5,二进制表示为101,那么 n-1 = 4,二进制表示为100, 5 & 4 = 101 & 100 ...

  10. easyui datagrid列显示图片

    表格头 显示图片 jquery