首页 > 数据库 >SQL语句:对重复字段的记录,只保留时间最新的一条记录

SQL语句:对重复字段的记录,只保留时间最新的一条记录

时间:2024-03-23 15:58:42浏览次数:26  
标签:timecreated no NORMLIZE 记录 MHQC04 st 字段 rowid SQL

select t.*, t.rowid from MHQC04_NORMLIZE t where st_no = 'HQ4M61WW ' order by timecreated desc 根据上面表字段和表名称,oracle语句,功能为,对于st_no重复的记录,只保留timecreated时间最新的一条,其余的删除。

DELETE FROM MHQC04_NORMLIZE
WHERE rowid IN (
    SELECT rowid
    FROM (
        SELECT rowid,
               ROW_NUMBER() OVER (PARTITION BY st_no ORDER BY timecreated DESC) AS rn
        FROM MHQC04_NORMLIZE
        WHERE st_no = 'HQ4M61WW            '
    )
    WHERE rn > 1
);

这条SQL语句实现了对于st_no重复的记录,只保留timecreated时间最新的一条,其余的删除的功能。让我解释一下这条SQL语句的各个部分:

1. `DELETE FROM MHQC04_NORMLIZE`: 这部分指定了要对哪个表进行删除操作,即MHQC04_NORMLIZE表。

2. `WHERE rowid IN (...)`: 这部分指定了要删除的记录的条件,即满足括号内子查询返回的rowid列表中的记录将被删除。

3. `SELECT rowid, ROW_NUMBER() OVER (PARTITION BY st_no ORDER BY timecreated DESC) AS rn FROM MHQC04_NORMLIZE WHERE st_no = 'HQ4M61WW           '`: 这部分是子查询,它首先根据st_no进行分组(PARTITION BY st_no),然后按照timecreated字段降序排序(ORDER BY timecreated DESC),并为每个分组中的记录赋予一个行号(ROW_NUMBER()函数)。这样,每个st_no分组中的记录按照timecreated时间的倒序排列,最新的记录行号为1。

4. `WHERE rn > 1`: 这部分在子查询的结果上加了一个条件,只选择行号大于1的记录,即保留每个st_no分组中时间最新的记录(行号为1),而删除其余的重复记录。

因此,这条SQL语句的作用是删除MHQC04_NORMLIZE表中st_no为'HQ4M61WW            '的重复记录,只保留每个st_no分组中时间最新的一条记录。

标签:timecreated,no,NORMLIZE,记录,MHQC04,st,字段,rowid,SQL
From: https://blog.csdn.net/AAA_li/article/details/136969121

相关文章

  • 25计学(11408)考研记录贴
    25计学(11408)考研记录贴背景:广东二本,计算机科学与技术专业23年获ICPC,CCPC和百度之星铜奖,蓝桥睿抗均有国奖,GDCPC铁2021-2023学校算法集训室学生教练深度学习论文在发ing前后端知识完全没学过大学成绩(总之除了数据结构很会,其他完全没学,还好学校考试水):高数75,线代85,概统75,数据......
  • 【附源码】JAVA计算机毕业设计音乐平台设计与实现(springboot+mysql+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,互联网已经渗透到人们生活的方方面面,音乐作为人们日常生活的重要娱乐方式,其在线化、平台化的发展趋势日益明显。近年来,音乐平......
  • 【附源码】JAVA计算机毕业设计音乐平台的设计(springboot+mysql+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着数字技术的迅猛发展,音乐产业正在经历一场深刻的变革。传统音乐销售模式逐渐式微,而在线音乐平台以其便捷性、多样性和互动性,迅速占领了市场。当前......
  • sql 处理时间
    mapper中关于时间部分的sql时间范围内查询mapper里使用(这里用的是人大金仓数据库语法,是String的日期进行了转换):<iftest="startTime!=nullandstartTime!=''">AND<![CDATA[b.cjsj>=#{startTime,jdbcType=VARCHAR}]]></if><iftest="endT......
  • mongoDB使用记录:副本集选举淘汰策略失效
    一个问题场景:业务请求查询数据库,当请求没有成功返回时(这里是数据库机器异常,表现是不返回请求结果,处于假死状态),业务挂起进入等待(WAIT),逻辑中断,表现为卡顿、持续加载中;高并发场景下,短时间内堆积的请求会大量占用发起数据库请求的机器的内存(风险一),大量业务卡顿异常;当数据库异常解决成......
  • mongoDB使用记录:误用数组索引
    版本:mongoDB4.2集群方案:副本+分片一个问题场景:集合内对多个字段建立索引,其中包含数组索引;当执行查询时,业务查询期望命中数组索引,mongodb筛选策略首次给出的执行方案命中了另外的索引key,导致当次慢查询,扫描超过1000w数量的文档,业务出现卡顿;处理&优化方案:mongodb筛选策略命中......
  • 阿里云服务器安装mysql后本地连接失败
    阿里云服务器安装mysql后本地连接失败一、问题描述在阿里云安装mysql后,想在本地电脑用可视化工具连接mysql,但是提示连接失败错误如图所示:二、问题分析1、检查3306端口首先,检查阿里云服务器的安全组是否开放了3306端口可以看到,我已经放行了3306端口。2、检查防火墙我选......
  • 数据库面试高频题目 - 深度解析 MySQL:探秘关系型数据库的核心技术(一)
       本文将深入探讨MySQL,这是关系型数据库中的核心技术,被广泛应用于数据存储和管理。透过高频面试题解析,我们将深入研究MySQL在数据建模、查询优化和事务处理中的作用。无论你是初学者还是渴望加深对关系型数据库技术的了解,本文都将为你提供实用的面试准备。一、innod......
  • MySQL中行级锁与表级锁与页级锁的区别
    #       再次复习MyISAM和InnoDB存储引擎时,发现两个存储引擎的区别包括MyISAM只支持表级锁,而InnoDB还支持行级锁,因为没有系统的了解过锁的概念,因此花了点时间进行了初步的学习,若有不对之处,望有指正;#简单回忆MyISAM与InnoDB区别MyISAM是5.5版之前,由于其缺陷明显......
  • PostgreSQL中的CTE(公共表表达式)知多少? - (中级)
    与我联系:微信公众号:数据库杂记   个人微信: iiihero我是iihero. 也可以叫我Sean.iihero@CSDN(https://blog.csdn.net/iihero) Sean@墨天轮 (https://www.modb.pro/u/16258)数据库领域的资深爱好者一枚。水木早期数据库论坛发起人 db2@smth就是俺,早期多年水木......