需求1:
只保留某个字段内容一样的行的其中一行。比如表如下f1 f2 f3 【列名】
v1 v2 v3
v1 v9 v10
v2 v1 v3
结果
f1 f2 f3 【列名】
v1 v2 v3
v2 v1 v3f1字段内容如果相同只保留一条,删除其他的。
上例中,v1相同所以只保留任意一条记录,另外一条删除
由于db有1千万数据所以希望有一个高效的语句,希望大家帮忙啊。方案1:
DELETE A FROM AAB A LEFT JOIN AAB B ON A.F1=B.F1 AND A.ID>B.ID WHERE B.ID IS NOT NULL
OR
DELETE A FROM AAB A INNER JOIN AAB B ON A.F1=B.F1 AND A.ID>B.ID;
方案2:
create table xxx as  
select * from 表如下 group by f1新建一个表,然后删除旧表,再把XXX改为原表名。我用上面三个方案都测试了,然后晚上22点休息,就运行了,第二天早晨11点看还没运行结束啊。
所以可能不行啊,不知道是不是我没有建立索引什么的造成的。测试数据量大概100w,最终会有2-3kw。
100w都是这样的速度。应该没法满足需求啊~~555