php查詢mysql重復,MySQL數據庫如何刪除重復數據?
樓主的問題是如何刪除重復數據僅保留其中一條,接下來就介紹一下如何實現該需求。
數據準備示例表 Student_Information 如下 :
我們插入一部分數據到該表,其中存在多條姓名為 Anaa 的手機號碼重復數據,如下:
入庫后數據如下:
設計刪除SQL我們通過Group by對手機號進行分組,然后計算每組最大ID作為保留數據,然后刪除其他數據。SQL設計如下:
執(zhí)行該SQL,結果如下:
我們可以看到,該SQL刪除了重復的數據時,并且保留了id最大的數據(最新數據)。
設計該SQL時需要注意什么?我們需要注意,使用 MySQL 進行 Delete From 操作時,若子查詢的 FROM 字句和更新、刪除對象使用同一張表時,會出現"You can't specify target table for update in FROM clause”。錯誤。
比如,我們設計如下SQL,該SQL從語法來看也是實現刪除 Student_Information 表重復數據,我們執(zhí)行一下看下結果。
執(zhí)行結果如下,我們可以看到拋出了"You can't specify target table for update in FROM clause”錯誤,那么該如何解決呢?
解決這個問題的方法也很簡單,就是將 select 出的結果通過中間表再 select 一遍即可,如下: