文档章节

根据当前记录获取前一条与下一条记录常用 sql语句

ville
 ville
发布于 2017/03/24 15:57
字数 368
阅读 42
收藏 0

1.oracle实现主要是用分析函数 lag与lead

SELECT *
FROM (SELECT
        id,
        LAG(ID)
        OVER (
          ORDER BY ID ) prevId,
        LEAD(ID)
        OVER (
          ORDER BY ID ) nextId
      FROM table_name)
WHERE ID = #{id}

2.mysql实现

如果ID是主键或者有索引,可以直接查找:

方法一:

查询上一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误):

select * from table_a where id = (select id from table_a where id < {$id} [and other_conditions] order by id desc limit 1) [and other_conditions];

查询下一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误):

select * from table_a where id = (select id from table_a where id > {$id} [and other_conditions] order by id asc limit 1) [and other_conditions];

方法二:

查询上一条记录的SQL语句((如果有其他的查询条件记得加上other_conditions以免出现不必要的错误))

select * from table_a where id = (select max(id) from table_a where id < {$id} [and other_conditions]) [and other_conditions];

查询下一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误):

select * from table_a where id = (select min(id) from table_a where id > {$id} [and other_conditions]) [and other_conditions];

3.mssql 实现

上一条记录的SQL语句:

select top 1 * from  table_name where newsid<id order by newsid DESC

下一条记录的SQL语句:

select top 1 * from table_name   where newsid>id order by newsid ASC

语句中的id为当前记录数据id

© 著作权归作者所有

ville

ville

粉丝 18
博文 58
码字总数 42196
作品 0
广州
架构师
私信 提问
数据库访问之Sqlite的不同之处

在我的Winform开发框架中,底层的数据访问支持多种不同的数据库,在数据库访问的开发过程中,发现Sqlite多数情况下,操作都和SqlServer或者说是和标准Sql差不多的。当然,Sqlite本身也有一些...

长平狐
2012/08/22
107
0
数据库访问之Sqlite的不同之处

在我的Winform开发框架中,底层的数据访问支持多种不同的数据库,在数据库访问的开发过程中,发现Sqlite多数情况下,操作都和SqlServer或者说是和标准Sql差不多的。当然,Sqlite本身也有一些...

长平狐
2012/06/11
80
0
12.python之pymsql模块

一、pymysql模块的简介。 pymysql是python3.x版本用来操作mysql数据库的一个模块,其实和python2.7中的MySQLdb模块的作用和操作语法都是一模一样的。 可以通过pip来进行安装: pip3.5 insta...

苏浩智
2017/06/11
0
0
【sql】- Sql Server 中的窗口(分析)函数实现类似游标访问效果

前言 小编在写存储过程中遇到了几个函数,貌似不是很熟,把它记录下来和大家一起学习。 正文 分析函数概念 SQL Server函数分为很多种,常见的有字符串函数、数学函数、时间日期函数、类型转换...

zt15732625878
2018/04/05
0
0
dede数据库类二次开发使用方法

<?php / DedeCms 数据库使用实例说明 / //确保数据库信息填写正确 //数据库连接信息 $cfgdbhost = 'localhost'; $cfgdbname = 'sccms'; $cfgdbuser = 'root'; $cfgdbpwd = '123456'; $cfgdbp......

Junn
2012/10/02
95
0

没有更多内容

加载失败,请刷新页面

加载更多

教你玩转Linux—添加批量用户

添加和删除用户对每位Linux系统管理员都是轻而易举的事,比较棘手的是如果要添加几十个、上百个甚至上千个用户时,我们不太可能还使用useradd一个一个地添加,必然要找一种简便的创建大量用户...

xiangyunyan
11分钟前
0
0
返回提示信息,如:xxx创建成功!

【服务端】在输出的方法块中,加入要输出的字段(qcm_batch_id) QCMUserType.cs: public struct QCM_Custom_Create_Batch_Out_Tag { public BASCoreType.Cmn_Out_T......

_Somuns
11分钟前
1
0
Aliyun Serverless VSCode Extension v1.12.0 发布

Aliyun Serverless VSCode Extension 是阿里云 Serverless 产品 函数计算 Function Compute 的 VSCode 插件,该插件结合了函数计算 Fun 工具以及函数计算 SDK ,是一款 VSCode 图形化开发调试...

阿里云官方博客
11分钟前
2
0
程序员如何培养解决复杂问题的能力?

今天在上网时候,突然看到了这篇文章,感觉非常的适合现在的自己去思考下,可能也适用在座的读者。程序员不仅仅是敲代码,更是一个复合能力的结合体,也不仅仅停留在技术和代码阶段。你想要成...

哥本哈根的小哥
15分钟前
3
0
市场变化驱动产品思维升级

宜信科技中心财富管理产品部负责人Bob,与大家一起聊聊个性化推荐产品功能的设计和B端产品的功能策划方式。 拓展阅读:回归架构本质,重新理解微服务 智慧金融时代,大数据和AI如何为业务赋能...

宜信技术学院
15分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部