数据库删除完全重复的数据,针对每条重复的数据只保留一条

出现脏数据有时是很头疼的事情,特别是数据比较多,而且表结构比较复杂的。

最近就遇到一个奇葩问题,数据库主键约束不知道被谁删掉了,然后数据库中就出现了很多完全一样的数据,当然这里也包括主键,因为主键约束都被删除了,肯定可以存储id完全一样的数据。

之前遇到过有重复数据,但是不是完全一样,所以这次不能完全按照之前的做法去处理。

这次采用了另外一种方法,那就是创建一个临时表,表结构和重复的数据表结构一样。

比如脏数据的表名为test_bad_data,则去创建一个和test_bad_data表结构完全一样的test_bad_data2

接下来就是要写数据的时候了。

使用下面的语句即可,实现原理就是在脏数据表中根据group by 关键字进行去重,然后再把数据添加到新的空表中,然后再把表名改为之前的即可。

【这个方案只适合数据完全一样的情况,假如个别字段的值不完全一样,可以更新为完全一样即可】

insert into test_bad_data2(colA,colB) select colA,colB from test_bad_data group by colA,colB

执行这个后,test_bad_data2 中的数据将不会出现重复了。

你可能感兴趣的:(数据库)