如何高效删除重复数据?用诸如:
rowid,id相等,速度太慢了。对于大数据量的表的做插入,效率最好的是用临时表。
基本上就是这么一流程:
drop table t1
create table t1 as select ctemp.id ,max(ctemp.name) name,
max(ctemp.city) city from cardtypeid_temp ctemp
group by ctemp.id
truncate table cardtypeid_temp
insert into cardtypeid_temp select * from t1
在创建临时表的时候,没有用distinct * ,因为*是整行,如果id(唯一)相同,name不同,在用distinct的时候
任何会认为不同,这显然是不可以的。
如果用 distinct id,name意思是与distinct * 一样的。
由于这里我只判断id是重复列,所以分组的时候用就只了id,而其他的列表项除了ctemp.id外,都是单行
函数,必须要取别名。
注意一定要列出原表的全部字段
才能在往原表里面插入的时候就不会报错。好像是报告value is not enough。