我有一个包含 2800 万条记录的表,但现在它有 5600 万条记录,因为我假设该load local infile
命令会忽略表中已经存在的行。不,我需要一种有效删除重复行的方法。解决这个问题的最佳方法是什么?
如果我不想碰我的桌子,我可以通过这个语句选择唯一的行:
select distinct (l1.lat, l2.lon) from A, B;
将原件选择到新/临时表中,删除 5600 万条记录,插入您的原件。
示例: INSERT INTO new_fresh_table SELECT a, b, c, d FROM table_with_dupes GROUP BY a, b, c, d
如果您以某种方式丢失了您的 ID(不确定如何使用 PK),您需要GROUP BY
在每一列上使用。写一个SELECT
反对元数据来SELECT
为你写你的。
您没有指定记录是如何被欺骗的。是主键吗?姓名?什么?
来自 O'Reily 的SQL Cookbook(强烈推荐,即使对于 SQL 专业人士也是如此):
delete from dupes
where id not in ( select min(id) from dupes group by name )
如果您不能触摸表格,而不得不使用它,为什么不创建一个只显示不同记录的视图呢?