MySQL如何刪除重複數據

(*-*)浩
發布: 2019-05-11 09:32:36
原創
12747 人瀏覽過

查重是我們在工作中經常會遇到的一個需求,以下這篇文章主要給大家介紹了關於MySQL查詢重複資料(刪除重複資料保留id最小的一條為唯一資料)的相關資料,文中透過範例程式碼介紹的非常詳細,對大家的學習或工作有一定的參考學習價值。

推薦課程:MySQL教學

MySQL如何刪除重複數據

最近在做一個批次資料匯入到MySQL資料庫的功能,從批次匯入就可以知道,這樣的資料在插入資料庫之前是不會重複判斷的,因此只有在全部資料導入進去以後在執行一語句進行刪除,保證資料唯一性。

下面話不多說了,來一起看看詳細的介紹吧

表結構如下圖所示:

表名:brand

MySQL如何刪除重複數據

操作 

#使用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如何刪除重複數據

#總結:

很多東西都是需要自己一步一步的去探究的,當然網路上的建議也是非常寶貴的借鑒和資源,無論做什麼開發我們都需要理解它的工作原理才能夠更好的掌握它。


#

以上是MySQL如何刪除重複數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板