人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

MySQL去重的方法整理

發(fā)布日期:2022-04-08 08:14 | 文章來源:源碼之家

MySQL去重的方法整理

【初級】有極少的重復(fù)行

使用distinct查出來,然后手動一行一行刪除。

【中級】按照單個字段的重復(fù)去重

例如:對id字段去重

使用方法:獲取id的重復(fù)字段的值,利用相同id字段所在的行中,比較出數(shù)據(jù)不同的字段,刪除 除了最?。ɑ蜃畲螅┑淖侄嗡诘脑撔兄獾乃兄貜?fù)的行。一般使用主鍵來比較,因?yàn)橹麈I的值一定是唯一值,絕對不相同。

id  name
1    a
1    b
2    c
2    a
3    c

結(jié)果:

id  name
1    a 
2    a

操作:

delete from a_tmp 
where id in (select * from (select b.id from a_tmp b group by b.id having count(b.id) >1) bb) 
and name not in (select * from (select min(a.name) from a_tmp a GROUP BY a.id having count(a.id) >1) aa);

注意:

上述加粗并綠色的字,必須加別名,必須使用select * from (……)這樣的格式,否則會報錯:

[Err] 1093 - You can't specify target table 'a_tmp' for update in FROM clause

【高級】按多個字段的重復(fù)來去重

例如:對id,name相同的去重,即:對id,name都相同的算作重復(fù)行,對id相同而name不同的算作不重復(fù)行

使用方法:和單個字段相似,一般使用主鍵來比較,因?yàn)橹麈I的值一定是唯一值。

id  name  rowid
1  a      1
1  a      2
1  b      3
2  b      4
2  b      5
3  c      6
3  d     7

結(jié)果:

id  name  rowid
1  a      1 
1  b      3
2  b      4
3  c      6
3  d     7

操作:

第一種:

delete from a_tmp 
where (id,name) in (select * from (select b.id,b.name from a_tmp b group by b.id,b.name having count(b.id) >1) bb) 
and rowid not in (select * from (select min(a.rowid) from a_tmp a group by a.id,a.name having count(a.id) >1) aa);

第二種:

將id和name字段的值連接起來插入到臨時表中b_tmp,這樣便可以使用【中級】的單字段的判斷刪除方法。

#將兩字段連接的值,a_tmp表中唯一值的字段插入b_tmp表

insert into b_tmp 
 select concat(id,name),rowid from a_tmp;
#查出需要留下來的行
select id_name,max(rowid)
 from b_tmp 
 group by id_name
 having count(id_name)>1;
#使用【中級】的方法,或存儲過程完成去重的工作

【終極】每行都有兩份一樣的數(shù)據(jù)

例如:

使用方法:對于整行的數(shù)據(jù)都一樣,是沒辦法使用SQL語句刪除的,因?yàn)闆]有可以使用的條件限制來留下一行刪除所有與其相同的行。沒有不同的字段可以自己創(chuàng)造不同的字段,即:添加一個字段,設(shè)為自增長,并設(shè)為主鍵,它會自動添加上值。

id  name
1   a
1   a
1   b
1   b
2   c
2   c
3   c
3   c

結(jié)果:

id  name   rowid
1   a       1
1   b       3
2   c       5
3   c       7

操作:

添加一個自增長的字段,并暫時設(shè)為主鍵。

使用上面【中級】和【高級】的方法操作。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

美國服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實(shí)時開通

自選配置、實(shí)時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部