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

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

json 复制代码
[
{"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 = "申请人撤销"))

这样我们就得到如下结果

json 复制代码
[

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

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

Mybaits.xml

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"/>) q
  where q.id not in (
    (<include refid="removeRowIndex"/>)
    )
</select>
相关推荐
l1258653 分钟前
# RAG向量数据库优化实战:HNSW索引调参与生产级性能设计
数据库·python·mysql·langchain
梦Arrebol5 分钟前
Mysql内容及相关实验
数据库·mysql
OceanWaves199333 分钟前
mysql 8.0.32 磁盘爆满,清理从库日志
数据库·mysql
凤山老林37 分钟前
数据库读写分离与动态路由实战:Spring Boot + ShardingSphere-JDBC 生产配置
数据库·spring boot·后端·分库分表·sharding-jdbc
l1258652 小时前
# RAG噪声知识库治理:一致性与可信度的四层防线设计
数据库·人工智能·python·自然语言处理·langchain
聚美智数3 小时前
图片水印-图片剪裁-图片缩放API接口介绍
java·服务器·数据库
JavaPub-rodert3 小时前
Go 后台如何同时兼容 MySQL、PostgreSQL、SQLite 和 SQL Server?从 ShiyuAdmin 看 GORM 多数据库适配
数据库·mysql·postgresql·golang·javapub·王仕宇
瀚高PG实验室3 小时前
SQL优化案例:存储过程、复杂SQL拆成简单SQL提升整体性能
数据库·sql·postgresql·瀚高数据库
Code额4 小时前
基于 SQLAlchemy 2.x,面向 MySQL 数据库的从入门到精通实战教程(2)
数据库·sql·mysql·adb·ai
Wang's Blog4 小时前
PostgreSQL笔记36:执行计划基础解读与优化器成本模型
数据库·笔记·postgresql