SQL删除重复数据方法

作者:@大木瓜
本文为作者原创,转载请注明出处:https://www.cnblogs.com/damugua/p/16175356.html


一、2条及2条以内的重复

问题

如图有两列,第一列是主键,第二列是产品编码,其中产品编码有重复数据,我现在需要删除这部分编码重复的数据

 

方法

利用having +聚合函数

SELECT MIN(FID) FID,FProductCode FROM #table
where FDate='2022-04-20'
GROUP BY FProductCode
HAVING COUNT(1) >  1

查询出来的就是一半的重复数据

 

实现

删除重复数据

--删除重复数据
update #table set FDelete=1,exchange_status=0
where FID IN(
SELECT MIN(FID) FID,FProductCode FROM #table
where FDate='2022-04-20'
GROUP BY FProductCode
HAVING COUNT(1) >  1
)

 

----------------------------------------------------------------------------------

二、大于2条的重复

 

 如图所示:这种情况下如何去重呢?

一句话概括:查找表中所有重复的数据编码,且这部分编码的主键不是最小值的那个

1
2
3
4
5
6
7
8
9
10
11
12
--1、查询所有去重后的编码
--2、查询这些去重后的编码的主键FID
--即:根据单字段,删除表中该字段重复出现记录,保留最小主键IDUPDATE   MY_SP_StereoScopicStock  SET FDelete=1,exchange_status=0
WHERE  FDate='2022-05-30' AND FProductCode IN
(SELECT FProductCode FROM MY_SP_StereoScopicStock
where FDate='2022-05-30'
GROUP BY FProductCode HAVING COUNT(FProductCode) > 1
)
AND FID NOT IN
(SELECT MIN(FID) FROM MY_SP_StereoScopicStock
where FDate='2022-05-30'
GROUP BY FProductCode HAVING COUNT(FProductCode)>1)
复制代码
复制代码

 

  

 

posted @   大木瓜  阅读(1154)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示