【发布时间】:2020-10-08 07:34:56
【问题描述】:
我有VK_MODIFY 表,我想通过ORDERID 和EXTORID 的组合删除所有重复数据,并只保留最新的SYSTEM_INSERTED_AT。
[![在此处输入图片描述][1]][1]
我已尝试以下查询,但它无法正常工作:
DELETE FROM VK_MODIFY a
WHERE rowid not in
(SELECT min(rowid)
FROM VK_MODIFY b
where a.ORDERID = b.ORDERID and a.EXTORID = b.EXTORID);
【问题讨论】:
-
无法正常工作怎么办?它错误或删除了错误的行?
-
它实际上删除了错误的行...例如,在示例中,我想检查 ORDERID 和 EXTORDID 的每个相同组合并获取最新的 system_inserted_at 日期并删除其他行...例如这里它应该保留 ORDERID = 197179, EXTORDID = 9821732, SYSTEM_inserted_at = '2019-10-18 18.01.59' 并删除 ORDERID = 197179, EXTORDID = 9821732 的其他行
-
orderid 是如何生成的?如果这是来自序列,那么它将是一个我可以发布的简单查询。如果较新记录的 orderid 大于旧记录,则不需要根据 system_inserted_at 进行排序
-
不,orderid 没有序列...它在此表中从 gui 生成随机数
-
好的,我已经发布了可以解决您问题的答案
标签: sql oracle duplicates sql-delete