業務需求刪除表中重複數據只保留一行,網上方法很多,分享一個MySQL中刪除重複數據只保留一條,但是根據主鍵保留數據對我們並不適用。因爲我們主鍵也重複的mmp。(數據表並沒有做主鍵限制,主鍵值由hibernate uuid生成,重複的原因是同步數據時直接執行插入語句多次)。
背景介紹完畢,進入正題,如何刪除重複數據。直接執行delete語句肯定是不行的,因爲數據是完全重複的,無法用where having等篩選。要保留一條,所以想到了distinct。然後解決方法如下:
先創建一張表結構相同的新表
create table new_table like old_table;
然後複製舊錶數據到新表(去重複)
insert into new_table select distinct * from old_table;
然後刪除舊錶,新表改成舊錶的名字
drop table old_table;
alert table new_table rename to old_table;
完工!