目录
1.背景
2.解决方法
方案一:使用JOIN删除(高效方案)
方案二:使用子查询性能更优(兼容大多数MySQL版本)
1.背景
mysql5.7.41-log,
单表中数据量很多,约25.6万条,id是雪花算法生成,其中smiles字段内容存在重复现象,
要求smiles相同的行,只保留第一条,即id最小的那一条保留,删除其他smiles重复项。
2.解决方法
根据smiles分组,过滤出重复项,安装重复数倒序排列,
SELECT smiles, count(1) as cnt from patent_data WHERE del_flag='0' GROUP BY smiles HAVING cnt>1 ORDER BY cnt desc方案一:使用JOIN删除(高效方案)
执行去重sql语句,(只保留重复项里面id最小的一项)
DELETE p1 FROM patent_data p1 INNER JOIN patent_data p2 ON p1.smiles = p2.smiles AND p1.id > p2.id;方案二:使用子查询性能更优(兼容大多数MySQL版本)
执行子查询删除重复项sql语句,
DELETE FROM patent_data WHERE id NOT IN ( SELECT t.min_id FROM ( SELECT MIN(id) AS min_id FROM patent_data GROUP BY smiles ) t );