假如現在 MySQL數據庫有幾萬條記錄,由于某些原因導緻其中存在一些重複的記錄。那麼如何删除重複記錄隻留其中一條呢?
比如,比如存在十條重複的記錄,需要删除其它九條記錄,隻保留一條記錄。數據準備我們創建如下示例表, Student_Information 表創建 SQL如下 :
我們插入一部分數據到該表,其中存在多條姓名為 Anaa 的手機号碼重複數據,如下:
數據入庫後,我們通過 select * from Student_Information 查詢結果如下:
設計SQL我們通過 Group by對手機号進行分組,然後計算每組最大ID作為保留數據,然後删除其他數據。SQL設計如下:
執行該SQL,結果如下:
我們可以看到,該 SQL删除了重複的數據時,并且保留了id最大的數據(最新數據)。
設計該SQL時需要注意什麼?我們需要注意,使用 MySQL 進行 Delete From 操作時,若子查詢的 FROM 子句和删除或更新對象使用同一張表時,會出現"You can't specify target table for update in FROM clause”。錯誤。
比如,我們設計如下SQL。該 SQL從語法來看也實現删除 Student_Information 表重複數據,我們執行一下看下結果。
執行結果如下,我們可以看到抛出了"You can't specify target table for update in FROM clause”錯誤,那麼該如何解決呢?
解決這個問題的方法也很簡單,就是将 select 出的結果通過中間表再 select 一遍即可,如下:
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!