删除重复记录mysql
#一、查询重复记录sql
SELECT id,COUNT(*) AS total,songurl FROM HFMedia.HFSongs GROUP BY songurl HAVING total > 1 ORDER BY total DESC测试
#二、创建临时表
CREATE TEMPORARY TABLE tbl_hfsongs( id INT(10) ,number INT(5), url VARCHAR(255) , KEY pk(id) ) ENGINE=MEMORY;url
#三、查数据插入临时表table
INSERT INTO tbl_hfsongs SELECT id,COUNT(*) AS total,songurl FROM HFMedia.HFSongs GROUP BY songurl HAVING total > 1 ORDER BY total DESC ;数据
#四、测试生产的sqls脚本
SELECT CONCAT('delete from FROM HFMedia.HFSongs where songurl = \'',uniq,'\' and id != ',id) FROM tbl_hfsongs LIMIT 2;
#五、生成执行脚本、
SELECT CONCAT('delete from FROM HFMedia.HFSongs where songurl = \'',uniq,'\' and id != ',id,';') INTO OUTFILE '/tmp/delect_sb.sql' FROM tbl_hfsongs ;查询
#六、执行脚本tab
mysql>source /tmp/delect_sb.sql di
#七、测试清理重复数据后状况
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;