我有一个包含2800万条记录的表,但是现在它有5600万条记录,因为我假设该load local infile命令将忽略表中已经存在的行。不,我需要一种有效地删除重复行的方法。解决此问题的最佳方法是什么?
如果我不想碰我的桌子,可以通过以下语句选择唯一的行:
select distinct (l1.lat, l2.lon) from A, B;
Run Code Online (Sandbox Code Playgroud)
将原件选择到新的/临时表中,删除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为您写一个。