sql—删除oracle表中重复记录(行)的最佳方法

uxh89sit  于 2021-07-26  发布在  Java
关注(0)|答案(3)|浏览(248)

我们有一个 table 其中有 millions of records . 我们必须这么做 delete duplicate recordstable . 最好的方法是什么。
我想我要的 distinct record 在另一个 table 然后 truncate 这个 original table. 在那之后我会的 insert 回到原始记录。
我回答了这个问题 interview ,还是被拒绝了。有谁能提出更好的处理方法吗。

o75abkj4

o75abkj41#

这是我通常使用的:

delete from your_table a
where a.rowid > (select min(b.rowid) 
                 from your_table b
                 where a.join_column = b.join_column
                );

你的选择没那么糟糕;当您希望保留表数据集的一部分并删除其余部分时,它可以正常工作,因此“保存”所需的值、截断表(这比删除操作快)和将保存的行移回更快。
如果面试官告诉你你的答案有什么问题,你会更容易猜测。
另外,如果您感兴趣,可以在orafaq网站上查看更多删除重复项的方法。

gdrx4gfi

gdrx4gfi2#

最好的方法是使用相关查询和行id,如果表x有大量的记录,并且您想从中删除一些记录。

kmbjn2e3

kmbjn2e33#

别再看了。chrissaxon写了一篇关于如何用sql查找和删除重复行的博客

相关问题