/*十有三博客*/
  • 首页
  • 关于本站
  • 网站地图
  • RSS订阅

SQL查询当前数据上一条和下一条的数据以实现获取文章上下篇文章信息

2013-12-26 十有三 0 浏览:1万+ 数据库 SQL Server

项目中需要实现获取当前文章的的上一篇文章和下一篇文章,以实现较好的站内链接跳转。具体实现方式其实就是使用SQL查询当前数据的上一条和下一条关联数据。

相关文章:

  1. SQL获取上一条数据
  2. SQL获取下一条数据
  3. SQL使用ROW_NUMBER函数获取没有ID的当前数据的上下文数据(上一条和下一条)

这里假设有一张员工表,有三个字段 (ID,员工姓名,年龄):

表结构:

--由于作为测试表,只有两个字段,主要是自动增长标识ID和文章标题
--下面看下具体实现的SQL语句。
CREATE TABLE [dbo].[Article](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Title] [nvarchar](150) NULL
)

获取上一条数据:

SELECT TOP(1) ID,Title FROM [Article] WHERE ID<@CurrentId ORDER BY ID DESC

获取下一条数据:

SELECT TOP(1) ID,Title FROM [Article] WHERE ID>@CurrentId ORDER BY ID ASC

原理说明:

@CurrentId表示当前文章的ID,假设当前文章的ID是500,那么上一篇文章的ID应该是501,下一篇文章ID则是502。
这两条SQL语句的原理分析如下:

1、第一步在WHERE条件中过滤掉数据。

要获取当前数据的上一条数据就要排除掉ID比当前ID大的。

假设当前ID是500,那么只要获取ID为499、498和497以上的数据,而要过滤掉ID为501、502和503以下的数据。

同理要获取下一条数据或下一篇文章数据就要过滤排除掉ID比当前ID小的。

2、第二部要做的是精确获取当前数据的上下关联数据。

上一步骤已经获取了所有ID比当前ID小的数据,那么我们只要将这些数据降序排序下,然后取第一条数据就是当前数据的上一条数据。

而获取下一条关联数据则相反,我们获取到的数据都是比当前ID大的,所以我们要升序排序,然后获取第一条数据才是当前数据的下一条数据。 


作者:十有三

出处:https://shiyousan.com/post/0d3a0db7-3cae-486f-b5b5-a0b1ad118be3

版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。


  • 上一篇: 解决操作系统任务栏中谷歌浏览器chrome图标变成QQ图标
  • 下一篇: .NET 使用HttpWebRequest 伪造Request.UrlReferrer

相关文章
  • SQL Server Express不支持维护计划功能
  • MongoDB学习笔记:batchInsert is not a function
  • SQL Service 2008 SQL语句 四舍五入保留两位小数
  • System.Data.SqlClient.SqlError: 尚未备份数据库的日志尾部
  • 使用sqlcmd命令执行带参数的存储过程
  • MongoDB学习笔记:28663 Cannot start server. The default storage engine 'wiredTiger' is not available

文章分类

.NET技术 123 数据库 24 Web前端 21 网站建设运维 37 操作系统与应用 66 程序猿日常 11 开发工具 12 其他随笔 13

文章标签

ASP.NET ASP.NET MVC C# CSS HTML IIS Javascript Linux MongoDB MySql SQL SQL Server Visual Studio Windows系统 版本控制系统 插件工具 服务器 搞笑娱乐 好文分享 软件应用 生活知识 手机问题 随笔 网络知识 网站设计优化 网站维护 养生保健 异常处理 硬件设备 游戏攻略

热门文章

  • IIS8如何安装和使用URL重写工具-URL Rewrite
  • 林蛋大与楚中天,朱肚皮与朱月坡
  • 解决IE11安装升级失败和在安装前需要更新的问题
  • VS重构重命名的快捷键
  • Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件

推荐文章

  • 解决电脑突然死机后开机显示器黑屏无信号
  • 火狐浏览器在URL中不兼容反斜杠"\"作为路径分隔
  • ASP.NET .exclude 是什么文件?
  • C#中将自定义日期和时间格式的字符串转换成日期DateTime类型
  • ASP.NET MVC全局异常处理和捕获的思路

友情链接

  • Passingwind的博客
  • 码友网

知识共享许可协议 CC BY-SA 4.0本站作品采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。
闽ICP备15003702号
闽公网安备 35020302035102号