Oracle不连续的值,如何实现查找上一条、下一条

1.  遇到的问题

 

已知一个题库,希望实现当前页切换上一题,下一题的需求。

查看得知,数据库中用于查询的字段(主键)是不连续的。如上图所示:stxh为主键number类型。

 

2.  实现方式lead over

2.1  实现代码

   

下一条
select nowId, afterId from( 
SELECT stxh nowId, lead(stxh,1) over (order by stxh) as afterId from EXM_KSTK) 
where afterId-nowId>0 and nowId = 54;上一条
select beforeId, nowId from( 
SELECT stxh beforeId, lead(stxh,1) over (order by stxh) as nowId from EXM_KSTK) 
where nowId-beforeId>0 and nowId = 54;

 

2.2  lead方法说明

lead(value_expr [,offset][,default]) over([query_partition_clause] order by Order_by_clause)

value_expr:值表达式,通常是字段,也可是是表达式。

offset:偏移,如果>0 表示与当前行相比,向前的行数。默认值为1

default:默认值,偏移结果不存在时,默认的返回值。

 

2.3  分析"实现代码"

以上一条为例吧,主要分析lead over 部分:

SELECT 字段名 beforeId, lead(在字段名,偏移量) over (order by 字段名) as nowId from 表名) 

整条的使用就是需要传入当前的nowId值

 

3.  结合需求完善sql

3.1  上一条(主键stxh)

      首先需要通过当前id获取上一条记录id值

select beforeId from
(SELECT stxh beforeId, lead(stxh,
1) over (order by stxh) as nowId from EXM_KSTK) where nowId-beforeId>0 and nowId = 54;

      通过这条sql就拿到上一条的id值了,然后再select查询即可。

SELECT * FROM EXM_KSTK stxh = 
(select beforeId from(SELECT stxh beforeId, lead(stxh,1) over (order by stxh) as nowId from EXM_KSTK) where nowId-beforeId>0 and nowId = 54
)

 

3.2  下一条(主键stxh)

     直接贴代码吧。

SELECT * FROM EXM_KSTK stxh = 
(select  afterId from( SELECT stxh nowId, lead(stxh,1) over (order by stxh) as afterId from EXM_KSTK) where afterId-nowId>0 and nowId = 54
)

 

3.3  补充说明

EXM_KSTK:表名

stxh:我的表主键

54:上文所用到的54就是你需要去传入的当前已知的id值

博客地址:https://www.cnblogs.com/niceyoo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(2719):重读vue电商网站39之正则表达式验证邮箱和手机号码

Javascript // 验证邮箱的规则var checkEmail (rule, value, cb) > {const regEmail /^([a-zA-Z]|[0-9])(\w|-)[a-zA-Z0-9]\.([a-zA-Z]{2,4})$/if (regEmail.test(value)) {// 合法的邮箱return cb()}cb(new Error(请输入合法的邮箱))}// 验证手机号码的规则var checkMobi…

支付宝提现,单笔转账到支付宝账户

很简单。只需三个参数实现 单笔转账到支付宝账户 1、获取开放平台创建的APPID,同时必须添加 单笔转账到支付宝账户 这个功能 开放平台:https://open.alipay.com/platform/home.htm 2、登录支付宝商家中心平台:https://b.alipay.com/index.h…

Flink系列之:Checkpoints

Flink系列之:Checkpoints 一、概述二、保留Checkpoint三、目录结构四、通过配置文件全局配置五、创建 state backend 对单个作业进行配置六、从保留的checkpoint 中恢复状态 一、概述 Checkpoint 使 Flink 的状态具有良好的容错性,通过 checkpoint 机制…

filter过滤器实现验证跳转_返回验证结果

1. 需求背景 需要对某个请求url进行拦截&#xff0c;模拟是否可以进入某一个接口&#xff0c;如果拦截需要返回数据false&#xff0c;别问我为何不用intercept拦截器。 2. web.xml <filter> <filter-name>restfulFilter</filter-name> <filter-clas…

学习基础和C语言基础调查

一.你有什么技能比大多人&#xff08;超过90%以上&#xff09;更好&#xff1f; 答&#xff1a;回答这个问题之前应该加上“我觉得”三个字&#xff1b;其实我没什么太多太实用的技能&#xff0c;无非就是一些特别的、没什么新鲜有意义的技能&#xff0c;比如说我觉得有一些不太…

前端学习(2730):重读vue电商网站40之使用vue-table-with-tree-grid

安装新的依赖 vue-tabel-with-tree-gridvue-tabel-with-tree-grid 官方文档 安装完成后&#xff0c;在 main.js 入口文件内先导入 tree-tabel 然后全局注册组件 tree-tabel 页面中&#xff0c;我们使用了如下属性&#xff1a; data 确定我们的数据源&#xff0c;columns定义我…

年终个人工作总结

这里有25篇个人年终总结&#xff0c;涵盖各行各业 http://www.duanmeiwen.com/zongjie/fanwen/46847.html https://wenku.baidu.com/view/9cddf7653069a45177232f60ddccda38376be180.html https://jz.docin.com/p-322307149.html

腾讯TBS加载网页无法自适应记录

1. 所遇到的问题 webview加载指定网页无法实现自适应&#xff0c;之前在加载重构一个网页的时候&#xff0c;其实也遇到这种问题&#xff0c;然后就有了下面的一下步骤 WebSettings webSettings view.getSettings(); webSettings.setJavaScriptEnabled(true); // settings…

前端学习(2731):重读vue电商网站41之自定义格式化时间的全局过滤器

在 main.js 入口文件全局注册格式化时间的过滤器&#xff0c;代码如下所示&#xff1a; Javascript // 自定义格式化时间的全局过滤器 Vue.filter(dataFormat, function(originVal) {const dt new Date(originVal)const year dt.getFullYear()const mon (dt.getMonth() 1 …

sign check fail: check Sign and Data Fail

支付宝开发报错&#xff1a;com.alipay.api.AlipayApiException: sign check fail: check Sign and Data Fail 解决方法&#xff1a; 确认使用的支付宝公钥是否正确&#xff0c;不同的环境使用的支付宝公钥不同&#xff0c; 如沙箱环境、线上openapi网关和mapi网关对应的支付…

TensorFlow学习笔记(1):variable与get_variable, name_scope()和variable_scope()

Variable tensorflow中有两个关于variable的op&#xff0c;tf.Variable()与tf.get_variable()下面介绍这两个的区别 使用tf.Variable时&#xff0c;如果检测到命名冲突&#xff0c;系统会自己处理。使用tf.get_variable()时&#xff0c;系统不会处理冲突&#xff0c;而会报错 i…

前端学习(2732):重读vue电商网站42之添加富文本编辑器

vue-quill-editor 官方文档传送门 通过 vue-ui 界面&#xff0c;可以安装我们所需要的依赖&#xff0c;或者使用下文 npm 或 yarn安装。 NPM Js npm install vue-quill-editor --save# or yarn add vue-quill-editorMount with global Js import Vue from vue import VueQui…

1、Flutter_初体验_创建第一个应用_AndroidStudio_windows

1.前言 至于 Flutter 是啥&#xff0c;我就不在这啰嗦了&#xff0c;下面以 windows 为例&#xff0c;展示一下从安装 Flutter 到运行 APP 整个过程&#xff1b; 2.安装 Flutter 2.1、中文介绍文档&#xff1a;https://flutterchina.club/get-started/install/ &#xff08;我的…

jquery.min.js一引入到工程中显示红叉,或其他.js文件显示红叉

1.可能的原因&#xff1a; Eclipse或者MyEclipse校验失败的错误&#xff0c;不影响程序正常执行 2.解决方案&#xff1a; 选择项目&#xff0c;右键 Myeclipse--> ManaValidation--> ExcludeResource 将出现问题的js前的复选框选中。点击“应用” “确定”。如果以上…

【JEECG技术文档】Online唯一校验使用说明

1、功能介绍 配置了唯一校验的字段&#xff0c;在录入和编辑页面中&#xff0c;动态查询用户输入值是否存在校验。 要使用online唯一校验功能必须先在online表单开发中配置唯一字段的校验方式为唯一校验。 2、配置唯一校验 登录系统&#xff0c;在线开发-online表单开发&#x…

026_lsof命令经验总结

一、lsof处理删除文件未释放句柄问题. 但是如果你不知道是哪个文件&#xff0c;或者是很多文件都有这样的情况&#xff0c;那你需要使用如下命令 lsof |grep deleted 注:这个deleted表示该已经删除了的文件&#xff0c;但是文件句柄未释放,这个命令会把所有的未释放文件句柄…

错误记录--更改tomcat端口号方法,Several ports (8005, 8080, 8009)

启动Tomcat服务器报错&#xff1a; Several ports (8005, 8080, 8009) required by Tomcat v5.5 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port. To start this server you wil…

eclipse 安装 lombok插件

下载插件 官网下载 &#xff1a;https://projectlombok.org/ 有些小伙伴官网可能打不开&#xff0c;现提供我的下载地址&#xff1a;https://files.cnblogs.com/files/niceyoo/lombok.zip 安装 lombok 插件 1、右键打开 2、选择 eclipse.exe > install 博客地址&#xff1a;…

关于 spring MVC 配置自动扫描中 use-default-filters 属性

1、springMVC 设置扫描 Bean 的两种常见写法 1.1、先看第一种常见的配置&#xff1a;默认 <!-- 配置Controller扫描 --> <context:component-scan base-package"com.jeenotes.ssm" /> 1.2、第二种&#xff0c;自定义&#xff0c;只扫描 control <!-- …

C语言的基本构成

C语言的基本构成 知识点&#xff1a;C语言的注释&#xff1b;关键字&#xff1b;书写风格&#xff1b;常量和变量 重要程度&#xff1a;★★★★ 1、C语言的良好风格 用C语言编写的程序&#xff0c;称为C语言源程序&#xff0c;简称C程序。 本节将通过一个简单的C程序例子&…