亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL 刪除數(shù)據(jù)庫(kù)中重復(fù)數(shù)據(jù)方法小結(jié)

 更新時(shí)間:2014年07月08日 09:36:17   投稿:hebedich  
在實(shí)際項(xiàng)目中,我們經(jīng)常會(huì)遇到刪除數(shù)據(jù)庫(kù)中重復(fù)數(shù)據(jù)的問(wèn)題,貌似是很簡(jiǎn)單的問(wèn)題哈,下面我們來(lái)探討下

剛開(kāi)始,根據(jù)我的想法,這個(gè)很簡(jiǎn)單嘛,上sql語(yǔ)句

delete from zqzrdp where tel in (select min(dpxx_id) from zqzrdp group by tel having count(tel)>1);

執(zhí)行,報(bào)錯(cuò)?。!~

異常意為:你不能指定目標(biāo)表的更新在FROM子句。傻了,MySQL 這樣寫,不行,讓人郁悶。

難倒只能分步操作,蛋疼

以下是網(wǎng)友寫的,同樣是坑爹的代碼,我機(jī)器上運(yùn)行不了。

1. 查詢需要?jiǎng)h除的記錄,會(huì)保留一條記錄。

select a.id,a.subject,a.RECEIVER from test1 a left join (select c.subject,c.RECEIVER ,max(c.id) as bid from test1 c where status=0 GROUP BY RECEIVER,SUBJECT having count(1) >1) b on a.id< b.bid where a.subject=b.subject and a.RECEIVER = b.RECEIVER and a.id < b.bid

2. 刪除重復(fù)記錄,只保留一條記錄。注意,subject,RECEIVER 要索引,否則會(huì)很慢的。

delete a from test1 a, (select c.subject,c.RECEIVER ,max(c.id) as bid from test1 c where status=0 GROUP BY RECEIVER,SUBJECT having count(1) >1) b where a.subject=b.subject and a.RECEIVER = b.RECEIVER and a.id < b.bid;

3. 查找表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(peopleId)來(lái)判斷

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

4. 刪除表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(peopleId)來(lái)判斷,只留有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)

5.刪除表中多余的重復(fù)記錄(多個(gè)字段),只留有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)

看來(lái)想偷懶使用一句命令完成這個(gè)事好像不太顯示,還是老老實(shí)實(shí)的分步處理吧,思路先建立復(fù)制一個(gè)臨時(shí)表,然后對(duì)比臨時(shí)表內(nèi)的數(shù)據(jù),刪除主表里的數(shù)據(jù)

alter table tableName add autoID int auto_increment not null; 

create table tmp select min(autoID) as autoID from tableName group by Name,Address; 

create table tmp2 select tableName.* from tableName,tmp where tableName.autoID = tmp.autoID; 

drop table tableName; 

rename table tmp2 to tableName; 


相關(guān)文章

  • SQL中表鎖定(LOCK、UNLOCK)的具體使用

    SQL中表鎖定(LOCK、UNLOCK)的具體使用

    本文主要介紹了SQL中表鎖定(LOCK、UNLOCK)的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 教你如何通過(guò)日志文件恢復(fù)MySQL數(shù)據(jù)

    教你如何通過(guò)日志文件恢復(fù)MySQL數(shù)據(jù)

    Binlog日志是二進(jìn)制日志文件,有兩個(gè)作用,一個(gè)是增量備份,另一個(gè)是主從復(fù)制,即主節(jié)點(diǎn)維護(hù)一個(gè)binlog日志文件,從節(jié)點(diǎn)從binlog中同步數(shù)據(jù),也可以通過(guò)binlog日志來(lái)恢復(fù)數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于如何通過(guò)日志文件恢復(fù)MySQL數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • 解決遠(yuǎn)程連接mysql很慢的方法(mysql_connect 打開(kāi)連接慢)

    解決遠(yuǎn)程連接mysql很慢的方法(mysql_connect 打開(kāi)連接慢)

    有次同事提出開(kāi)發(fā)使用的mysql數(shù)據(jù)庫(kù)連接很慢,因?yàn)槲覀兊膍ysql開(kāi)發(fā)數(shù)據(jù)庫(kù)是單獨(dú)一臺(tái)機(jī)器部署的,所以認(rèn)為可能是網(wǎng)絡(luò)連接問(wèn)題導(dǎo)致的。
    2011-07-07
  • Linux系統(tǒng)下Mysql使用簡(jiǎn)單教程(一)

    Linux系統(tǒng)下Mysql使用簡(jiǎn)單教程(一)

    這篇文章主要介紹了Linux系統(tǒng)下Mysql使用簡(jiǎn)單教程(一)的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • Keepalived+HAProxy實(shí)現(xiàn)MySQL高可用負(fù)載均衡的配置

    Keepalived+HAProxy實(shí)現(xiàn)MySQL高可用負(fù)載均衡的配置

    這篇文章主要介紹了keepalived+haproxy實(shí)現(xiàn)MySQL高可用負(fù)載均衡的配置方法,通過(guò)這兩個(gè)軟件可以有效地使MySQL脫離故障及進(jìn)行健康檢測(cè),需要的朋友可以參考下
    2016-02-02
  • 基于 Mysql 實(shí)現(xiàn)一個(gè)簡(jiǎn)易版搜索引擎

    基于 Mysql 實(shí)現(xiàn)一個(gè)簡(jiǎn)易版搜索引擎

    本文基于 Mysql 8.0 版本,數(shù)據(jù)庫(kù)引擎采用的是 InnoDB,關(guān)于 Mysql 實(shí)現(xiàn)一個(gè)簡(jiǎn)易版搜索引擎,感興趣的朋友可以參考下文
    2021-08-08
  • mysql 鎖表鎖行語(yǔ)句分享(MySQL事務(wù)處理)

    mysql 鎖表鎖行語(yǔ)句分享(MySQL事務(wù)處理)

    下面這個(gè)語(yǔ)句是鎖定一行數(shù)據(jù),開(kāi)始讀取,一直到刪除后都不會(huì)有第二個(gè)人也讀到這條數(shù)據(jù)
    2011-09-09
  • 簡(jiǎn)介操作MySQL日志的一些方法

    簡(jiǎn)介操作MySQL日志的一些方法

    這篇文章主要介紹了操作MySQL日志的一些方法,對(duì)日志的刪除操作做了重點(diǎn)講解,需要的朋友可以參考下
    2015-07-07
  • MySQL用戶和數(shù)據(jù)權(quán)限管理詳解

    MySQL用戶和數(shù)據(jù)權(quán)限管理詳解

    這篇文章主要為大家詳細(xì)介紹了MySQL數(shù)據(jù)庫(kù)管理中的用戶和數(shù)據(jù)權(quán)限管理,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)MySQL有一定幫助,需要的可以參考一下
    2022-08-08
  • MySQL使用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)自動(dòng)更新的應(yīng)用實(shí)例

    MySQL使用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)自動(dòng)更新的應(yīng)用實(shí)例

    觸發(fā)器是非常常見(jiàn)的自動(dòng)化數(shù)據(jù)庫(kù)操作方式,無(wú)論是在數(shù)據(jù)更新、刪除還是需要自動(dòng)添加一些內(nèi)容到數(shù)據(jù)表上,觸發(fā)器都可以發(fā)揮作用,熟悉 SQL 的基本語(yǔ)法和一些常見(jiàn)的用例,可以幫助你合理地設(shè)置自己的數(shù)據(jù)庫(kù)操作流程,
    2024-01-01

最新評(píng)論