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?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通