oracle查找重复数据和删除重复数据sql

本文介绍了一种使用SQL查询和删除数据库中重复记录的方法。通过分组和计数功能定位重复项,并提供删除多余记录的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查找重复数据sql(思路就是根据需要判断重复数据的字段分组,根据having大于2的就是重复的)

--查找某表重复数据
select BUSS_TYPE_ID,
         BUSS_TYPE,
         TRADE_VARIETY_ID,
         TRADE_VARIETY,
         TRADE_SUBVARIETY_ID,
         TRADE_SUBVARIETY,
         TRADE_CODE,
         TRADE_OBJECT,
         count(id)
    from T_RPT_BUSINESS_STRUCTURE
    where jys_id=6
   group by BUSS_TYPE_ID,
            BUSS_TYPE,
            TRADE_VARIETY_ID,
            TRADE_VARIETY,
            TRADE_SUBVARIETY_ID,
            TRADE_SUBVARIETY,
            TRADE_CODE,
            TRADE_OBJECT
       having count(id) >= 2;

 删除重复数据的sql

       
delete from T_RPT_BUSINESS_STRUCTURE where 
       (BUSS_TYPE_ID,
         BUSS_TYPE,
         TRADE_VARIETY_ID,
         TRADE_VARIETY,
         TRADE_SUBVARIETY_ID,
         TRADE_SUBVARIETY,
         TRADE_CODE,
         TRADE_OBJECT)
   in(
         select BUSS_TYPE_ID,
         BUSS_TYPE,
         TRADE_VARIETY_ID,
         TRADE_VARIETY,
         TRADE_SUBVARIETY_ID,
         TRADE_SUBVARIETY,
         TRADE_CODE,
         TRADE_OBJECT
        from T_RPT_BUSINESS_STRUCTURE
       group by BUSS_TYPE_ID,
                BUSS_TYPE,
                TRADE_VARIETY_ID,
                TRADE_VARIETY,
                TRADE_SUBVARIETY_ID,
                TRADE_SUBVARIETY,
                TRADE_CODE,
                TRADE_OBJECT
           having count(id) >= 2
   ) and 
                id not in (
                   select min(id)
                  from T_RPT_BUSINESS_STRUCTURE
                 group by BUSS_TYPE_ID,
                          BUSS_TYPE,
                          TRADE_VARIETY_ID,
                          TRADE_VARIETY,
                          TRADE_SUBVARIETY_ID,
                          TRADE_SUBVARIETY,
                          TRADE_CODE,
                          TRADE_OBJECT
                     having count(id) >= 2
                )

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值