查重是我們在工作中經常會遇到的一個需求,以下這篇文章主要給大家介紹了關於MySQL查詢重複資料(刪除重複資料保留id最小的一條為唯一資料)的相關資料,文中透過範例程式碼介紹的非常詳細,對大家的學習或工作有一定的參考學習價值。
推薦課程:MySQL教學。
最近在做一個批次資料匯入到MySQL資料庫的功能,從批次匯入就可以知道,這樣的資料在插入資料庫之前是不會重複判斷的,因此只有在全部資料導入進去以後在執行一語句進行刪除,保證資料唯一性。
下面話不多說了,來一起看看詳細的介紹吧
表結構如下圖所示:
表名:brand
操作
#使用SQL語句查詢重複的資料有哪些:
SELECT * from brand WHERE brandName IN( select brandName from brand GROUP BY brandName HAVING COUNT(brandName)>1 #条件是数量大于1的重复数据 )
使用SQL刪除多餘的重複數據,並保留Id最小的一條唯一數據:
注意點:
錯誤SQL :DELETE FROM brand WHERE brandName IN (select brandName from brand GROUP BY brandName HAVING COUNT(brandName)>1)
AND Id NOT IN (select MIN(Id) from brand GROUP BY brandName HAVING COUNT(brandName)> )
提示: You can't specify target table 'brand' for update in FROM clause 不能為FROM子句中的更新指定目標表「brand」
原因是:不能將直接查處的資料當作刪除資料的條件,我們應該先把查出來的資料新建一個臨時表,然後再把臨時表當作條件進行刪除功能
正确SQL写法: DELETE FROM brand WHERE brandName IN (SELECT brandName FROM (SELECT brandName FROM brand GROUP BY brandName HAVING COUNT(brandName)>1) e) AND Id NOT IN (SELECT Id FROM (SELECT MIN(Id) AS Id FROM brand GROUP BY brandName HAVING COUNT(brandName)>1) t) #查询显示重复的数据都是显示最前面的几条,因此不需要查询是否最小值
結果如下圖:
#總結:
很多東西都是需要自己一步一步的去探究的,當然網路上的建議也是非常寶貴的借鑒和資源,無論做什麼開發我們都需要理解它的工作原理才能夠更好的掌握它。
#
以上是MySQL如何刪除重複數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!