假设有一张学生表,建表语句如下:
--学生 student表
create table student(
sno varchar2(10) primary key,
sname varchar2(20),
sage number(2),
ssex varchar2(5),
birthday date
);
现计划创建唯一索引(sno,sname),由于数据录入失误导致这两列数据有重复数据,进而导致唯一索引创建失败。
因此我们需要先查询出表中这些捣乱的数据,并进行去重处理。
可使用如下语句查询重复数据:
select T.*, T.ROWID
from student T
where exists (select 1
from student
where sno = T.sno
and sname = T.sname
and ROWID != T.ROWID)
补充:
如果只是查询某一列的重复值(如:sno),语句更加简单,可以如下:
select t. * from student t , student tt where t.rowid != tt.rowid and t.sno = tt.sno