亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

一條sql語句完成MySQL去重留一

2024-07-24 13:15:08
字體:
來源:轉載
供稿:網友

前幾天在做一個需求的時候,需要清理mysql中重復的記錄,當時的想法是通過代碼遍歷寫出來,然后覺得太復雜,心里想著應該可以通過一個sql語句來解決問題的。查了資料,請教了大佬之后得出了一個很便利的sql語句,這里分享下這段sql語句和思路。

需求分析

數據庫中存在重復記錄,刪除保留其中一條(是否重復判斷基準為多個字段)

解決方案

碰到這個需求的時候,心里大概是有思路的。最快想到的是可以通過一條sql語句來解決,無奈自己對于復雜sql語句的道行太淺,所以想找大佬幫忙。

找人幫忙

因為這個需求有點著急,所以最開始想到的是,可以找這方面的同行來解決,然后分享這個問題給同事,結果這貨隨便百度了一下,就甩給我一個從未用過的sql語句,讓我自己嘗試,心里萬匹那啥啥啥奔騰而過...

自己百度

找到了一條sql語句:

DELETEFROM vitae aWHERE (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)

這條語句是在 【MySQL中刪除重復數據只保留一條】 這篇文章里找到的。這條sql思路很明顯,有以下3步:

SELECT peopleId, seq FROM vitae GROUP BY peopleId, seq HAVING count(*) > 1 查詢出表中重復記錄作為條件

SELECT min(rowid) FROM vitae GROUP BY peopleId, seq HAVING count(*) > 1 查詢出表中重復記錄中ID最小的值為第二個條件

最后根據以上兩個條件,刪除 重復記錄中最小ID的其余重復記錄

但是很無奈的是,運行這條語句出現了錯誤,大致報錯意思是,不能在查詢的時候同時更新這個表。

代碼解決

根據上面這個sql語句想到或許可以通過代碼的方式,兩步來達到同樣的目的:

先取出重復的數據集

根據查詢到的數據集,循環刪除其余的重復數據

想法是有了,寫出來也很快,但是一運行嚇我一跳,竟然需要 116s 左右,然后自己就想一定要找到可以使用的sql語句,貼一下代碼和運行結果:

sql語句去重,distinct,去重的sql語句

sql語句去重,distinct,去重的sql語句

完美的【去重留一】SQL

最后在一個技術群里得到了完美的答案,看這條sql語句:

DELETE consum_recordFROM consum_record,  (  SELECT   min(id) id,   user_id,   monetary,   consume_time  FROM   consum_record  GROUP BY   user_id,   monetary,   consume_time  HAVING   count(*) > 1 ) t2WHERE consum_record.user_id = t2.user_id  and consum_record.monetary = t2.monetary and consum_record.consume_time = t2.consume_timeAND consum_record.id > t2.id;

上面這條sql語句,仔細看一下,揣摩出思路也不難,大概也分為3步來理解:

(SELECT min(id) id, user_id, monetary, consume_time FROM consum_record GROUP BY user_id, monetary, consume_time HAVING count(*) > 1 ) t2 查詢出重復記錄形成一個集合(臨時表t2),集合里是每種重復記錄的最小ID

consum_record.user_id = t2.user_id and consum_record.monetary = t2.monetary and consum_record.consume_time = t2.consume_time 關聯 判斷重復基準的字段

根據條件,刪除原表中id大于t2中id的記錄

看到這個語句的時候,心里想這也太厲害了。這么一個簡單的sql語句,竟然可以解決這么復雜的問題,漲姿勢了~

運行起來也超級快,原先的代碼循環執行,需要 116s 左右,而這里 0.3s 就可以了,厲害了~

sql語句去重,distinct,去重的sql語句

總結

作為一個php程序猿,按理來說sql這里是不能拖后腿的,無奈實際中,需要忙碌的事情太多,現在的sql水平也只是處于在一個普通的層次中,以后找機會一定要補一下這方面的知識。

今天就分享到這里啦。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91香蕉嫩草神马影院在线观看| 久久久电影免费观看完整版| 日本午夜精品理论片a级appf发布| 国产精品久久久久久亚洲影视| 国产日本欧美一区二区三区| 成人有码在线播放| 日韩亚洲精品电影| 久久电影一区二区| 北条麻妃久久精品| 超碰精品一区二区三区乱码| 欧美三级欧美成人高清www| 91精品久久久久久| 不卡中文字幕av| 国产精品视频中文字幕91| 久久久免费精品视频| 亚洲剧情一区二区| 亚洲人成网站999久久久综合| 日韩在线观看免费高清| 91久热免费在线视频| 亚洲视频欧洲视频| 最近2019中文字幕在线高清| 日韩中文在线观看| 亚洲欧美日韩国产成人| 欧美激情一区二区三级高清视频| 精品久久久一区二区| 国产精品视频不卡| 2020久久国产精品| 亚洲国产婷婷香蕉久久久久久| 亚洲va欧美va在线观看| 成人性生交大片免费看小说| 国产精品九九久久久久久久| 成人黄色午夜影院| 亚洲人成网在线播放| 成人久久久久久| 日韩精品极品在线观看播放免费视频| 日韩高清人体午夜| 91久久在线视频| 欧美午夜丰满在线18影院| 国产视频久久网| 亚洲视频视频在线| 亚洲日韩欧美视频一区| 日韩精品在线看| 欧美专区中文字幕| 久久99热精品这里久久精品| 国产欧美 在线欧美| 久久久这里只有精品视频| 伊人久久大香线蕉av一区二区| 亚洲国产精品久久| 亚洲视频在线免费看| 精品亚洲aⅴ在线观看| 中文字幕亚洲色图| 亚洲国产毛片完整版| 日韩美女在线看| 91在线网站视频| 亚洲91精品在线观看| 国产日韩欧美自拍| 亚洲欧洲在线播放| 亚洲国产精品热久久| 欧美精品久久久久久久久| 亚洲深夜福利视频| 欧美另类99xxxxx| 九色成人免费视频| 成人黄色在线免费| 日韩综合视频在线观看| 久久久综合免费视频| 伦理中文字幕亚洲| 日本一区二区不卡| 亚洲最大成人网色| 欧美—级高清免费播放| 亚洲第一视频网站| 国产91精品视频在线观看| 欧美午夜www高清视频| 亚洲精品视频网上网址在线观看| 国产精品极品尤物在线观看| 久久天天躁狠狠躁老女人| 91亚洲国产精品| 欧美最顶级的aⅴ艳星| 国产精品青草久久久久福利99| 国产精品视频久久| 播播国产欧美激情| 主播福利视频一区| 精品成人69xx.xyz| 国产精品女人久久久久久| 最近2019中文字幕在线高清| 日韩电影免费观看在线| 亚洲欧洲中文天堂| 欧美视频一二三| 亚洲性日韩精品一区二区| 亚洲国产精品中文| 久久精品欧美视频| 上原亚衣av一区二区三区| 动漫精品一区二区| 中文字幕在线精品| 国产精品极品尤物在线观看| 欧美野外猛男的大粗鳮| 久久久亚洲国产天美传媒修理工| 日韩欧美一区二区三区| 国产欧美日韩91| 亚洲成人久久久| 国产精品视频网站| 日韩中文视频免费在线观看| 欧美最猛性xxxxx亚洲精品| 555www成人网| 91伊人影院在线播放| 亚洲精品视频在线播放| 欧美黄色性视频| www高清在线视频日韩欧美| 亚洲精品第一页| 欧美日韩中文字幕日韩欧美| 欧美日韩福利在线观看| 日韩精品在线视频观看| 国产精品久久网| 91精品视频在线免费观看| 中文字幕在线亚洲| 中文字幕亚洲一区二区三区五十路| www.99久久热国产日韩欧美.com| 日韩视频欧美视频| 欧美风情在线观看| zzijzzij亚洲日本成熟少妇| 国产成人+综合亚洲+天堂| 日韩美女视频免费看| 精品视频在线播放| 欧美一级bbbbb性bbbb喷潮片| 久久精品男人天堂| 精品久久久久久中文字幕大豆网| 久久久久久久久国产| 国产亚洲精品成人av久久ww| 亚洲精品日韩久久久| 国产成人亚洲综合青青| 欧美日韩一区二区三区| 精品视频在线播放免| 久久久999成人| 国产精品国产三级国产aⅴ9色| 欧美人交a欧美精品| 播播国产欧美激情| 欧洲成人在线观看| 97在线免费观看| 日本一区二区三区四区视频| 日本一区二区三区在线播放| 欧美壮男野外gaytube| 91成人精品网站| 久久久久北条麻妃免费看| 动漫精品一区二区| 欧美日韩国产在线| 亚洲精品国产免费| 国产97在线播放| 亚洲欧洲av一区二区| 欧美成人精品一区二区三区| 国内成人精品一区| 日韩中文av在线| 大胆人体色综合| 久久国产视频网站| 亚洲视屏在线播放| 精品国产一区久久久| 欧美国产日韩一区二区在线观看| 国产91ⅴ在线精品免费观看| 正在播放亚洲1区| 国产精品欧美一区二区三区奶水| 国产成人精品午夜| 亚洲国产一区二区三区在线观看| 国产精品日韩欧美大师| 日本韩国欧美精品大片卡二| 国产日韩在线观看av| 久久精品国产久精国产思思|