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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

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

本篇文章主要介紹了"刪除重復(fù)數(shù)據(jù)",主要涉及到重復(fù)數(shù)據(jù)方面的內(nèi)容,對于MySql感興趣的同學(xué)可以參考一下: 最近因?yàn)榘l(fā)現(xiàn)數(shù)據(jù)庫中的表有臟數(shù)據(jù),需要維護(hù)。這些臟數(shù)據(jù)就是重復(fù)數(shù)據(jù),需要將其刪除。可能因?yàn)槟阍诮ū淼臅r(shí)候考慮欠佳,需要為表里面的幾個(gè)字段建立一個(gè)(聯(lián)合)唯一索引...

最近因?yàn)榘l(fā)現(xiàn)數(shù)據(jù)庫中的表有臟數(shù)據(jù),需要維護(hù)。這些臟數(shù)據(jù)就是重復(fù)數(shù)據(jù),需要將其刪除。

可能因?yàn)槟阍诮ū淼臅r(shí)候考慮欠佳,需要為表里面的幾個(gè)字段建立一個(gè)(聯(lián)合)唯一索引,但是沒有建立,而由于不止一個(gè)寫的程序在往表里面insert數(shù)據(jù),造成數(shù)據(jù)的重復(fù)~~

現(xiàn)在需要?jiǎng)h除這些重復(fù)數(shù)據(jù),看了看網(wǎng)上前輩們寫的例子,大多數(shù)不能用,rowid也出來了,而mysql中是沒有rowid的。

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

可以看出:表中數(shù)據(jù)明顯有不滿足條件的重復(fù)數(shù)據(jù)。

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

結(jié)果如下:

嘗試使用網(wǎng)上的方法刪除: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)

根本行不通,因?yàn)閞owid在MySQL里面是不存在的,這不同于Oracle。。

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

解決方法:使用一個(gè)中間臨時(shí)表過渡~~

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

查看臨時(shí)表tmp的內(nèi)容:SELECT * FROM tmp

得到:

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

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

檢查下現(xiàn)在的記錄:SELECT * FROM t_test

發(fā)現(xiàn):

發(fā)現(xiàn),記錄終于“干凈”了。。重復(fù)性的記錄被成功刪除了!

當(dāng)然比較保險(xiǎn)的做法是建表時(shí)期就給date和time字段加上一個(gè)聯(lián)合索引。或者刪除重復(fù)記錄之后再alter table加上一個(gè)聯(lián)合索引即可。

以上就介紹了刪除重復(fù)數(shù)據(jù),包括了重復(fù)數(shù)據(jù)方面的內(nèi)容,希望對MySql有興趣的朋友有所幫助。

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。