Software

MySQL 刪除重複資料

這次因為有一支程式在設定的時候不小心跑到重複的排程,所以造成了資料重複

上網去查有兩種方式

1.用 ALTER IGNORE TABLE `tablename` ADD UNIQUE INDEX(`Column1`,`Column2`...);

這是直接刪除欄位裡面的重複資料的方式

2.建立一個新的表格,然後把重複資料先移過去,在把非重複資料移過去

2.1 INSERT INTO `tablename01` SELECT * FROM `tablename` GROUP BY `Column1`,`Column2` HAVING count(*)>1

2.2 INSERT INTO `tablename01` SELECT * FROM `tablename` GROUP BY `Column1`,`Column2` HAVING count(*)=1

其實使用第一的方式比較快,但是總覺得不保險,所以我就選擇了第二種比較麻煩的方式

至少之前的 table 都還留著 🙂

PS. GROUP BY 如果在 MySQL 5.7 以上的版本使用上有點改變如果不做 GROUP BY 的欄位必須使用 ANY_VALUE()