Sql 删除查询以删除重复项并保留最新记录

Sql 删除查询以删除重复项并保留最新记录,sql,oracle,Sql,Oracle,我有一个Oracle数据库,里面有一张表,比如说aura 现在,在这个表中有不同的记录和重复项。我必须删除这些重复的 如上图所示,Dsvsd、Cvra、单输入和双输入 删除重复项的逻辑是,如果记录没有重复项(如单个条目),则保留它。现在我无法手动执行此任务,因为表的记录计数为84000,并且有18000条不同的记录。如何使用查询进行查询?或者这项任务的最佳方法是什么 这是预期的结果 下面是一种使用rowid和row_number ranking函数删除重复项的方法: delete from au

我有一个Oracle数据库,里面有一张表,比如说aura

现在,在这个表中有不同的记录和重复项。我必须删除这些重复的

如上图所示,Dsvsd、Cvra、单输入和双输入

删除重复项的逻辑是,如果记录没有重复项(如单个条目),则保留它。现在我无法手动执行此任务,因为表的记录计数为84000,并且有18000条不同的记录。如何使用查询进行查询?或者这项任务的最佳方法是什么

这是预期的结果

下面是一种使用rowid和row_number ranking函数删除重复项的方法:

delete from auro
where  rowid in
( select rwid
  from ( select rowid rwid,
                row_number() over ( partition by name
                                    order by review_id desc) rn
         from   auro
       ) t
  where  rn>1
)

在你的代码中的某个地方试试这个。请忽略语法错误,因为我是sql中的noob 从countname>1的auro中选择名称作为n 开始 环 选择MAXreview\u id,MINreview\u id作为maxid,minid来自名为n的auro 从auro中删除 其中name=n; 当maxid=minid时退出; 端环;
结束

请在代码中的某个地方尝试此操作。请忽略语法错误,因为我是sql中的noob,请从auro中选择名称作为n,并使用countname>1开始循环
选择MAXreview\u id,MINreview\u id作为maxid,minid来自名称为n的auro从名称为n的auro中删除;当maxid=minid时退出;端环;结束

为什么在样本数据中cvra是6而不是10?顺便说一句-一个选项是使用行数获得最高值,然后删除其他行数…我的坏。。。cvra应该是10此查询的唯一问题是我对从auro删除的其他属性进行了其他检查,其中,*******中的rowid和blk不为null,kli为null,blk_rk为null。这些检查额外的检查不起作用…您建议的DML的一个更完整的示例将是合适的。很抱歉,由于网络问题,发送了两次,这就是之前的答案不完整的原因。再次抱歉
delete from aura where id not in (
select min(id) keep (dense_rank last order by review_id nulls first) 
from aura
group by name
)