Mysql数据表去重

查询不重复元素个数

select count(distinct domain) from black_botnet_domian; 

查询表中元素个数大于等于2的元素

SELECT goods_id,goods_name FROM tdb_goods GROUP BY goods_name HAVING COUNT(goods_name)>=2;  

然后使用LEFT JOIN使原始表和上述查询结果进行连接,删除重复记录,保留id较小的记录

DELETE t1 FROM tdb_goods AS t1 LEFT JOIN( SELECT goods_id,goods_name FROM tdb_goods GROUP BY goods_name HAVING COUNT(goods_name)>=2) AS t2 ON t1.goods_name = t2.goods_name WHERE t1.goods_id>t2.goods_id; 

如果想保留id较大的同理,如下所示

DELETE t1 FROM tdb_goods AS t1 LEFT JOIN( SELECT max(goods_id) AS goods_id,goods_name FROM tdb_goods GROUP BY goods_name HAVING COUNT(goods_name)>=2) AS t2 ON t1.goods_name = t2.goods_name WHERE t1.goods_id<t2.goods_id;

猜你喜欢

转载自www.cnblogs.com/luxiaojun/p/9070926.html