删除重复记录4种方法

Posted jiangqingfeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除重复记录4种方法相关的知识,希望对你有一定的参考价值。

1.DELETE FROM tab1 a
WHERE rowid < ( SELECT MAX(b.rowid)
FROM tab1 b
WHERE b.name = a.name
AND b.price = a.price );
2.DELETE FROM tab1 a
WHERE EXISTS ( SELECT *
FROM tab1 b
WHERE b.name = a.name
AND b.price = a.price
AND a.rowid < b.rowid );
3.DELETE FROM tab1 a
WHERE rowid IN ( SELECT rowid
FROM tab1
EXCEPT
SELECT MAX(rowid)
FROM tab1
GROUP BY name, price );
4.DELETE FROM tab1 a
WHERE rowid NOT IN ( SELECT MAX(rowid)
FROM tab1
GROUP BY name, price );
第1和第2种方法关联子查询的性能问题是难点。
第3和第4种方法的性能优劣取决于表的规模,以及删除行数与留下的行数之间的比率。

以上是关于删除重复记录4种方法的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE查询删除重复记录三种方法

Oracle删除重复记录只保留一条数据的几种方法

oracel 查询删除重复记录的几种方法

SQL-重复记录查询的几种方法

SQL重复记录查询的几种方法

SQL重复记录查询的几种方法