一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - MySQL去重的方法整理

MySQL去重的方法整理

2020-08-01 17:46starglm Mysql

這篇文章主要介紹了MySQL去重的方法整理的相關資料,需要的朋友可以參考下

MySQL去重的方法整理

【初級】有極少的重復行

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

【中級】按照單個字段的重復去重

例如:對id字段去重

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

?
1
2
3
4
5
6
7
8
9
10
11
id  name
 
1    a
 
1    b
 
2    c
 
2    a
 
3    c

結果:

?
1
2
3
4
5
id  name
 
1    a
 
2    a

操作:

?
1
2
3
4
5
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

【高級】按多個字段的重復來去重

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

使用方法:和單個字段相似,一般使用主鍵來比較,因為主鍵的值一定是唯一值。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
id  name  rowid
 
1  a      1
 
1  a      2
 
1  b      3
 
2  b      4
 
2  b      5
 
3  c      6
 
3  d     7

結果:

?
1
2
3
4
5
6
7
8
9
10
11
id  name  rowid
 
1  a      1
 
1  b      3
 
2  b      4
 
3  c      6
 
3  d     7

操作:

第一種:

?
1
2
3
4
5
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表

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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;
 
#使用【中級】的方法,或存儲過程完成去重的工作

 【終極】每行都有兩份一樣的數據

例如:

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
id  name
 
1   a
 
1   a
 
1   b
 
1   b
 
2   c
 
2   c
 
3   c
 
3   c

結果:

?
1
2
3
4
5
6
7
8
9
id  name   rowid
 
1   a       1
 
1   b       3
 
2   c       5
 
3   c       7

操作:

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

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

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

原文鏈接:https://my.oschina.net/starglm/blog/748701

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99视频九九精品视频在线观看 | 日本黄色一区 | 亚洲欧美专区精品伊人久久 | 色哟哟在线资源 | 亚洲热图| 日韩欧美高清一区 | 美女被扣逼 | yellow视频在线观看 | 天天干夜夜噜 | 视频在线播放 | 国产日产欧产精品精品软件 | 国内精品免费一区二区三区 | 日本免费高清在线观看播放 | 欧美vpswindows | 精品午夜中文字幕熟女人妻在线 | 国产成人盗拍精品免费视频 | 日本不卡在线视频高清免费 | 国产午夜免费不卡精品理论片 | a级情欲片在线观看hd | 娇喘高潮教室h | 2014天堂 | 天天白天天谢天天啦 | 国内精品91东航翘臀女神在线 | a看片| 久9视频这里只有精品123 | 日本xx高清视频免费观看 | 久热人人综合人人九九精品视频 | 亚洲 欧美 制服 校园 动漫 | 羞羞色男人的天堂伊人久久 | 欧美人做人爱a全程免费 | 四虎国产精品免费入口 | 91理论片午午伦夜理片久久 | 四虎国产成人亚洲精品 | 91精品国产色综合久久 | 精品国产视频 | 国内精品视频九九九九 | 大伊香蕉精品视频一区 | julia ann黑人巨大 | a级亚洲片精品久久久久久久 | 欧美肥bb| 娇喘高潮教室h |