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

查找重复数据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
                )
扫描二维码关注公众号,回复: 516075 查看本文章

猜你喜欢

转载自liuna718-163-com.iteye.com/blog/2356958