好比咱们有如下表oracle
create table emp as select * from employees;函数
看看记录数:3d
select count(*) from emp;blog
--get
107it
而后,重复插入几回:io
insert into emp select * from emp;table
insert into emp select * from emp;select
insert into emp select * from emp;channel
insert into emp select * from emp;
而后看这个emp表中有不少重复记录,
那么咱们如何快速删除呢,
咱们能够使用oracle的分析函数over partition来处理:
DELETE FROM emp
WHERE ROWID IN
(SELECT ROWID
FROM (SELECT ROWID,
ROW_NUMBER OVER (PARTITION BY employee_id ORDER BY employee_id) rn
FROM emp)
WHERE rn > 1);
以后,咱们再去看,就只有107行记录了.