Oracle 查询重复数据,删除重复数据多字段

select a.F_AIRPROT, a.F_THREECODE, a.F_CAPACITY, a.F_AIRPORT_LEVEL

  from T_AIRPORT_LEVEL a

 where (a.F_AIRPROT, a.F_THREECODE/* , a.F_CAPACITY, a.F_AIRPORT_LEVEL*/) in

       (select L.F_AIRPROT , L.F_THREECODE/*, L.F_CAPACITY , L.F_AIRPORT_LEVEL*/

          from T_AIRPORT_LEVEL L

         group by L.F_AIRPROT,

                  L.F_THREECODE,

                  L.F_CAPACITY,

                  L.F_AIRPORT_LEVEL

        having count(*) > 1)

delete from T_AIRPORT_LEVEL a

 where (a.F_AIRPROT, a.F_THREECODE) in

       (select L.F_AIRPROT, L.F_THREECODE

          from T_AIRPORT_LEVEL L

         group by L.F_AIRPROT,

                  L.F_THREECODE,

                  L.F_CAPACITY,

                  L.F_AIRPORT_LEVEL

        having count(*) > 1)

   and rowid not in (select min(rowid)

                       from T_AIRPORT_LEVEL LL

                      group by LL.F_AIRPROT,

                               LL.F_THREECODE,

                               LL.F_CAPACITY,

                               LL.F_AIRPORT_LEVEL

                     having count(*) > 1)

猜你喜欢

转载自xinjiatao.iteye.com/blog/2422984