日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql类似于excel的删除重复项_删除重复数据 excel去除重复数据 怎么筛选重复数据 excel重复数据合并...

發布時間:2023/12/14 数据库 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql类似于excel的删除重复项_删除重复数据 excel去除重复数据 怎么筛选重复数据 excel重复数据合并... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇文章主要介紹了"刪除重復數據",主要涉及到重復數據方面的內容,對于MySql感興趣的同學可以參考一下: 最近因為發現數據庫中的表有臟數據,需要維護。這些臟數據就是重復數據,需要將其刪除。可能因為你在建表的時候考慮欠佳,需要為表里面的幾個字段建立一個(聯合)唯一索引...

最近因為發現數據庫中的表有臟數據,需要維護。這些臟數據就是重復數據,需要將其刪除。

可能因為你在建表的時候考慮欠佳,需要為表里面的幾個字段建立一個(聯合)唯一索引,但是沒有建立,而由于不止一個寫的程序在往表里面insert數據,造成數據的重復~~

現在需要刪除這些重復數據,看了看網上前輩們寫的例子,大多數不能用,rowid也出來了,而mysql中是沒有rowid的。

現假設有一張t_test表,主鍵字段為id,還有date,time,cnt1,cnt,cnt3三個字段。假設date,time組合起來規定只能有一條記錄(即需要為date,time建立聯合唯一索引)。表中數據如下:

可以看出:表中數據明顯有不滿足條件的重復數據。

我們先查詢出有哪些重復數據(按date, time兩個字段):SELECT * FROM t_test WHERE (DATE, TIME) IN(SELECT DATE,TIME FROM t_test GROUP BY DATE, TIME HAVING COUNT(1)>1);

結果如下:

嘗試使用網上的方法刪除:DELETE FROM t_test a WHERE (a.date, a.time) IN(SELECT DATE,TIME FROM t_test GROUP BY DATE, TIME HAVING COUNT(1)>1)AND rowid NOT IN(SELECT MIN(rowid) FROM t_test GROUP BY DATE, TIME HAVING COUNT(1)>1)

根本行不通,因為rowid在MySQL里面是不存在的,這不同于Oracle。。

還需注意的一點是:mysql中不支持在delete語句里使用表別名,所以無法進行自連接來刪除表中的記錄!

解決方法:使用一個中間臨時表過渡~~

首先,建立一個臨時表如下:CREATE TEMPORARY TABLE tmp AS SELECT MIN(id) FROM t_test GROUP BY DATE,TIME

查看臨時表tmp的內容:SELECT * FROM tmp

得到:

這張臨時表記錄了重復記錄里id最小的主鍵,以及沒有重復記錄的主鍵信息。

接下來,刪除不在里面的記錄即可:DELETE FROM t_test WHERE id NOT IN(SELECT * FROM tmp)

檢查下現在的記錄:SELECT * FROM t_test

發現:

發現,記錄終于“干凈”了。。重復性的記錄被成功刪除了!

當然比較保險的做法是建表時期就給date和time字段加上一個聯合索引。或者刪除重復記錄之后再alter table加上一個聯合索引即可。

以上就介紹了刪除重復數據,包括了重復數據方面的內容,希望對MySql有興趣的朋友有所幫助。

總結

以上是生活随笔為你收集整理的mysql类似于excel的删除重复项_删除重复数据 excel去除重复数据 怎么筛选重复数据 excel重复数据合并...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。