oracle数据库表中在没有主键的情况下如何删除重复记录
数据库表没有主键,没有唯一性约束,如何删除重复记录呢?求大神解答。
----随机新建一张表
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就好了。