sql: having使用,及刪除重復數據


 

 

寫了好幾年的sql,having語句基本上很少寫,這就有一點尷尬了,現在總結一下having的作用,每日整理一下學習文檔。

having 通常伴隨group by使用,過濾group by的數據集。

 

比如找到重復的數據:

select card_id,count(*) from 502_account group by card_id HAVING count(1)>1

找到找到重復的card_id

 

如果要找到金額大於500

select card_id from 502_drug_sale group by card_id HAVING sum(amount) >100000

 

其實是比較簡單的用法。

 

利用having,刪除重復的數據,算是進階用法吧。

DELETE

FROM

account

WHERE

card_id IN ( SELECT card_id FROM cunjk.249 _account GROUP BY card_id HAVING count( card_id ) > 1 )

AND id NOT IN ( SELECT min( id ) FROM cunjk.249 _account GROUP BY card_id HAVING count( card_id ) > 1 )

 

我的account表有幾百萬條數據,需要找到重復的數據然后刪掉,card_id 是卡號,用來做區分,id是主鍵,自增長,刪除重復卡號信息的數據,where條件的第一個條件,找到重復的card_id,第二個條件,找到重復數據中較小的那一個id,not in,刪除較大id的重復數據

 

you get?

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM