如果有人能为重写下面的查询提供一些建议,那就太好了。我有一个有200万条记录的表,我需要找出两个独立键(id和dnm)上的重复项,如果它有重复项,那么需要删除它。我为它编写了两个单独的查询,如下所示。不管怎样,有没有办法使它成为一个查询,并以更好的方式重写它,因为这个查询确实需要时间。
DELETE FROM TABLEA
WHERE ID IN (SELECT ID FROM TABLEA WHERE TYPE <> 'A'
GROUP BY ID having count(*)>1) AND TYPE <> 'A';
DELETE FROM TABLEA WHERE DNM IN (SELECT DNM FROM TABLEA WHERE TYPE <> 'A'
GROUP BY DNM HAVING COUNT(*) >1) AND TYPE <> 'A';
2条答案
按热度按时间jv4diomz1#
您将希望对这两列使用行号,如下所示:
请注意,我建议您使用内部联接创建一个新表。这将消除重复的行,而无需执行两个单独的delete语句。
kxe2p93d2#
通常,要删除重复项,您需要使用这样的查询
它通常比其他方法快得多