首页 > 其他 > 详细

删除重复记录4种方法

时间:2020-03-28 19:50:26      阅读:53      评论:0      收藏:0      [点我收藏+]

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种方法

原文:https://www.cnblogs.com/jiangqingfeng/p/12588850.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!