久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL中怎么刪除重復的記錄

177次閱讀
沒有評論

共計 2181 個字符,預計需要花費 6 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

MySQL 中怎么刪除重復的記錄,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

1、查找全部重復記錄

select * from  表  where  重復字段  in (select  重復字段  from  表  group by  重復字段  having count(*) 1)

2、過濾重復記錄(只顯示一條)

select * from HZT Where ID In (select max(ID) from HZT group by Title)

注:此處顯示 ID 最大一條記錄。

刪除重復記錄

1、刪除全部重復記錄(慎用)

delete  表  where  重復字段  in (select  重復字段  from  表  group by  重復字段  having count(*) 1)

2、保留一條(這個應該是大多數人所需要的 ^_^)

delete HZT where ID not In (select max(ID) from HZT group by Title)

注:此處保留 ID 最大一條記錄。

三、舉例

1、查找表中多余的重復記錄,重復記錄是根據單個字段 (peopleId) 來判斷

select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId)   1)

2、刪除表中多余的重復記錄,重復記錄是根據單個字段 (peopleId) 來判斷,只留有 rowid 最小的記錄

delete from people where peopleId in (select peopleId from people group by peopleId having count(peopleId)   1) and rowid not in (select min(rowid) from people group by peopleId having count(peopleId ) 1)

3、查找表中多余的重復記錄(多個字段)

select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*)   1)

4、刪除表中多余的重復記錄(多個字段),只留有 rowid 最小的記錄

delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*)   1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*) 1)

5、查找表中多余的重復記錄(多個字段),不包含 rowid 最小的記錄

select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*)   1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*) 1)

四、補充

有兩個以上的重復記錄,一是完全重復的記錄,也即所有字段均重復的記錄,二是部分關鍵字段重復的記錄,比如 Name 字段重復,而其他字段不一定重復或都重復可以忽略。

1、對于第一種重復,比較容易解決,使用

select distinct * from tableName

就可以得到無重復記錄的結果集。

如果該表需要刪除重復的記錄(重復記錄保留 1 條),可以按以下方法刪除

select distinct * into #Tmp from tableName drop table tableName select * into tableName from #Tmp drop table #Tmp

發生這種重復的原因是表設計不周產生的,增加唯一索引列即可解決。

2、這類重復問題通常要求保留重復記錄中的第一條記錄,操作方法如下。

假設有重復的字段為 Name,Address,要求得到這兩個字段唯一的結果集

select identity(int,1,1) as autoID, * into #Tmp from tableName select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID select * from #Tmp where autoID in(select autoID from #tmp2)

看完上述內容,你們掌握 MySQL 中怎么刪除重復的記錄的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計2181字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 溆浦县| 房产| 吴堡县| 图们市| 宜兰市| 安溪县| 朝阳市| 吉木萨尔县| 奈曼旗| 洛扎县| 个旧市| 黎川县| 丰县| 广宁县| 杭州市| 重庆市| 淅川县| 哈密市| 青龙| 嘉善县| 岢岚县| 邵武市| 溆浦县| 许昌县| 澄迈县| 尼玛县| 皮山县| 灌阳县| 垫江县| 巴塘县| 巴东县| 赤壁市| 汶上县| 扎兰屯市| 莲花县| 阿合奇县| 晋宁县| 卢氏县| 剑河县| 文登市| 额敏县|