目录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_flag0 GROUP BY smiles HAVING cnt1 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 );