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?