mysql数据库重复记录过滤删除解决
mysql数据库重复记录过滤删除解决
p至尊宝 发表于1年前
mysql数据库重复记录过滤删除解决
  • 发表于 1年前
  • 阅读 68
  • 收藏 2
  • 点赞 0
  • 评论 1

腾讯云实验室 1小时搭建人工智能应用,让技术更容易入门 免费体验 >>>   

摘要: 歌曲库中有1300万条歌曲、存在一些脏数据和重复数据

删除重复记录

#1、查询重复记录

SELECT id,COUNT(*) AS total,songurl  FROM HFMedia.HFSongs GROUP BY songurl HAVING total > 1  ORDER BY total DESC

 

#2、建立临时表
CREATE TEMPORARY TABLE  tbl_hfsongs( id INT(10) ,number INT(5), url VARCHAR(255) , KEY pk(id)  ) ENGINE=MEMORY;

#3、查数据插入临时表

INSERT INTO tbl_hfsongs  SELECT id,COUNT(*) AS total,songurl  FROM HFMedia.HFSongs GROUP BY songurl HAVING total > 1  ORDER BY total DESC  ;

 

#4、测试生产的sqls

SELECT CONCAT('delete from FROM HFMedia.HFSongs where songurl = \'',uniq,'\' and  id != ',id) FROM tbl_hfsongs  LIMIT 2;

#5、生成执行脚本、
SELECT CONCAT('delete from FROM HFMedia.HFSongs where songurl = \'',uniq,'\' and  id != ',id,';') INTO OUTFILE '/tmp/delect_sb.sql' FROM tbl_hfsongs ;

 

#6、执行脚本

mysql>source  /tmp/delect_sb.sql 

 

#7、测试清理重复数据后情况

SELECT id,COUNT(*) AS total,songurl  FROM HFMedia.HFSongs GROUP BY songurl HAVING total > 1  ORDER BY total DESC

 

#8,手动释放临时表

mysql>truncate tbl_hfsongs;

mysql>drop table tbl_hfsongs;

共有 人打赏支持
粉丝 3
博文 11
码字总数 3467
评论 (1)
p至尊宝
分表联表查询
(SELECT * FROM HFLocations_2017_01_5 WHERE devicecode="PFDX13532110812385330000" ORDER BY id DESC )
UNION (SELECT * FROM HFLocations_2016_12_5 WHERE devicecode="PFDX13532110812385330000" ORDER BY id DESC ) LIMIT 10;

不重复插入;
INSERT INTO HFDevices (field1,field2) SELECT 'd1','d2' FROM DUAL WHERE NOT EXISTS ( SELECT 1 FROM HFDevices WHERE devicecode = 'dc';
×
p至尊宝
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: