绝地无双
如何攻击表中的dup的一般方法如下。1)定义唯一键列 - 我在我的例子中使用 KEY1, KEY22) 定义标识顺序的列 - 保留最高值,所有其他值都被视为dups。我用ORDER1例子create table tab asselect 1 key1, 1 key2, 1 order1 from dual union all -- dupselect 1 key1, 1 key2, 2 order1 from dual union all -- dupselect 1 key1, 1 key2, 3 order1 from dual union allselect 1 key1, 2 key2, 1 order1 from dual union allselect 2 key1, 1 key2, 1 order1 from dual union all -- dupselect 2 key1, 1 key2, 2 order1 from dual union allselect 2 key1, 2 key2, 1 order1 from dual;此查询标识重复的行select KEY1, KEY2, ORDER1 from (select tab.*, row_number() over (partition by key1, key2 order by order1 desc) as rn from tab)where rn > 1 KEY1 KEY2 ORDER1---------- ---------- ---------- 1 1 2 1 1 1 2 1 1并且此查询删除重复项delete from tab where (KEY1, KEY2, ORDER1) in(select KEY1, KEY2, ORDER1 from (select tab.*, row_number() over (partition by key1, key2 order by order1 desc) as rn from tab)where rn > 1)将您的表名和列名替换为TAB,KEY1, KEY2和ORDER1。