oracle数据库表中在没有主键的情况下如何删除重复记录

oracle数据库表中在没有主键的情况下如何删除重复记录

问题描述:

数据库表没有主键,没有唯一性约束,如何删除重复记录呢?求大神解答。

http://www.cosdiv.com/page/M0/S505/505957.html
http://www.jb51.net/article/35593.htm
http://www.newhua.com/2012/0106/141377.shtml

上面几篇文章你可以点击进去看看。

如果回答对你有帮助,请采纳

----随机新建一张表
create table emp_lhz(id varchar2(3),name varchar2(10),age number(3));
----随便插入几组值(该语句执行两遍)
insert into emp_lhz values('001','jack',25);
insert into emp_lhz values('002','tom',34);
insert into emp_lhz values('003','mary',41);
insert into emp_lhz values('004','smith',22);
----查看数据
select * from emp_lhz;
----查看不重复的数据
select distinct * from emp_lhz;
----删除重复的数据
delete from emp_lhz where rowid not in (select min(rowid) from emp_lhz group by id,name,age);

delete from A where(employee_id,division_id,job_id,first_name,last_name,salary)
in
(select employee_id,division_id,job_id,first_name,last_name,salary from B);

解决的思路是运用rowid,这个是唯一的,相同的记录选取最小值或者最大值的rowid就好了。