/*十有三博客*/
  • 首页
  • 关于本站
  • 网站地图
  • 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 Service 2008 SQL语句 四舍五入保留两位小数
  • 解决SQL SERVER 2014 不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的表进行了更改或者启用了"阻止保存要求重新创建表的更改"选项
  • 解决COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION错误
  • MongoDB学习笔记:28663 Cannot start server. The default storage engine 'wiredTiger' is not available
  • MongoDB学习笔记:解决编写.mongorc.js脚本无效的问题
  • MongoDB在Windows Server 2012 R2中的安全部署

文章分类

.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安装升级失败和在安装前需要更新的问题
  • Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件
  • VS重构重命名的快捷键

推荐文章

  • 随便写写:快大半年没写博客了文章笔记积累的一大堆
  • 解决windows任务计划执行批处理文件会弹出显示命令行窗口
  • 使用sqlcmd命令执行带参数的存储过程
  • System.Data.SqlClient.SqlError: 尚未备份数据库的日志尾部
  • 骑马与砍杀 战团 秘籍/作弊指令大全/角色导入导出作弊法

友情链接

  • Passingwind的博客
  • 码友网

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