有效地删除重复的行

时间:2012-06-06 18:31:02

标签: mysql sql

我有一个包含2800万条记录的表,但现在它有5600万条记录,因为我认为load local infile命令会忽略表中已有的行。不,我需要一种有效删除重复行的方法。解决这个问题的最佳方式是什么?

如果我不想触摸我的表,我可以通过以下语句选择唯一的行:

select distinct (l1.lat, l2.lon) from A, B;

3 个答案:

答案 0 :(得分:5)

将原稿选入新的/临时表,删除5600万条记录,插入原件。

实施例:     INSERT INTO new_fresh_table       选择a,b,c,d FROM table_with_dupes       GROUP BY a,b,c,d

如果你以某种方式遗失了你的身份证(不确定PK的可能性如何),你需要在每一列上使用GROUP BY。为元数据写一个SELECT,为你写SELECT

答案 1 :(得分:0)

您没有指定记录如何被欺骗。是主键吗?名称?什么?

来自O'Reily的SQL Cookbook(强烈推荐,即使是SQL专业人士):

delete from dupes
  where id not in ( select min(id) from dupes group by name )

答案 2 :(得分:0)

如果您无法触摸桌面,并且必须使用它,为什么不创建仅向您显示不同记录的视图?