当前位置: 首页 > news >正文

sql 如何在查询时移除某一行数据以及这一行的上一行数据

oracel 有个rownum 函数, 它可以为 某一行 数据增加一个序列比如查出的序列值便是

[
{"name": "法外狂徒-张三",option":"申请团长", rownum:1},
{"name": "法外狂徒-张三","option":"申请人撤销", rownum:2},
{"name": "法外狂徒-张三","option":"申请旅长", rownum:3},
{"name": "法外狂徒-张三","option":"司令通过", rownum:4},
{"name": "法外狂徒-张三","option":"申请师长", rownum:5},
{"name": "法外狂徒-张三","option":"申请人撤销", rownum:6},
{"name": "法外狂徒-张三","option":"申请军长", rownum:7},
{"name": "法外狂徒-张三","option":"司令通过", rownum:8},
]

以上是表内的结果集,由于申请人撤销了操作,所以它之前的操作是无效的, 在页面也不显示, 申请人撤销这个字段是固定的,它之前的操作不固定, 所以如果想要过滤掉它之前的数据,我们需要先过去到申请人撤销那条数据的下标,再去-1.

想法, 我们可以先查询上面的结果集, 并且通过rownum为每个结果集定义一个固定的序号, 查询结果集select * from 结果集 where rownum not in ((select rownum from (结果集) where option = "申请人撤销" unine all select rownum -1 from (结果集) where option = "申请人撤销"))
这样我们就得到如下结果

[{"name": "法外狂徒-张三","option":"申请旅长", rownum:3},
{"name": "法外狂徒-张三","option":"司令通过", rownum:4},
{"name": "法外狂徒-张三","option":"申请军长", rownum:7},
{"name": "法外狂徒-张三","option":"司令通过", rownum:8},
]

由于结果集被反复使用到,我们在mybatis中可以将结果集sql 提出到sql片段中,便于反复调用

Mybaits.xml

<sql id= "dataSource">select t*,rownum as id from 表名 where t.name=#{name} order by operTime
</sql><sql id="removeRowIndex">select id from (<include refid="dataSource"/>) where option="申请人撤销"union all select id-1 from (<include refid="dataSource"/>) where option="申请人撤销"
</sql><select id="getFolw" resultMap="java.util.HashMap" parameterType="java.util.HashMap">select * from(<include refid="dataSource"/>) qwhere q.id not in ((<include refid="removeRowIndex"/>))
</select>

http://www.mrgr.cn/news/7081.html

相关文章:

  • 开源模型应用落地-qwen2-7b-instruct-LoRA微调模型合并-Axolotl-单机单卡-V100(十)
  • 深入理解HTTP的基础知识:请求-响应过程解析
  • 谷粒商城实战笔记-250-商城业务-消息队列-RabbitMQ安装-Docker
  • 基于SpringBoot的线上教学平台系统
  • 漏洞挖掘 | 浅谈一次edusrc文件上传成功getshell
  • 21:【stm32】定时器二:输入捕获
  • 动态内存管理-经典笔试题
  • 《机器学习》—— 通过下采样方法实现逻辑回归分类问题
  • 嵌入式机器视觉的流水线分拣机器人:OpenCV、 FreeRTOS、 TensorFlow(代码详解)
  • 【全面指导】线性代数如何高效备考?选择哪本习题集?
  • vue3 集成 Sass
  • Python-基础-函数
  • “易碎”的留守农村人,都在被AI智能监控“兜住”
  • ELK日志系统
  • docker容器数据卷、数据卷基本案例
  • C# 一个队列两个线程,一个线程入,一个线程出,数据不一致的原因
  • 区间合并+并查集
  • linux增删用户
  • 蓝桥杯编程题讲解
  • linux中对.jar文件的配置文件进行修改