最近帮运维组处理了一份急着上架的数据,大概有140万量,下面我们看一下是怎样处理的吧。
这批数据大部分都是重复的,经过处理的数据大概在30万左右,然后进行一对多合并处理,最后的数据量大概在1万左右。
下面提供了两种方法或思路,第一种思路是网上提供的比较多的一种,就是通过唯一性约束的字段进行排序,然后查询处理出来的这些数据都是重复数据的第一条,所以id必然是这些重复数据最小的,然后删除调这些重复数据中id不是最小的就可以得出筛选结果了。
当然数据上面设计到商业保密,这里我就自己创建一个demo了。
sql如下:
// 将重复数据的id最小的一条筛选出来,第二步进行删除
select id FROM haha
where CONCAT(namea,sex,num) in (
SELECT CONCAT(namea,sex,num) FROM haha
GROUP BY CONCAT(namea,sex,num)
HAVING count(id> 1)
)
//进行删除操作,删除冗余数据
DELETE FROM haha where id in (
select id FROM haha
where CONCAT(namea,sex,num) in (
SELECT CONCAT(namea,sex,num) FROM haha
GROUP BY CONCAT(namea,sex,num)
HAVING count(id> 1)
)
and id not in (
SELECT MIN(id) as id FROM haha
GROUP BY CONCAT(namea,sex,num)
HAVING COUNT(id > 1)
))
当然写sql的过程中也遇到一些错误,
1、select