我在Oracle中是这样做的:
以Emp为例(Empno是唯一字段):
DELETE Emp WHERE ROWID <> (
SELECT MAX(ROWID) FROM Emp E WHERE Emp.Empno = E.Empno);
即可删除Emp表中Empno重复的数据而只留下一条。
如果唯一条件是多个字段将字段并在WHERE条件后即可。
最简单的方法如下:(假设title列和detail列有重复数据,在SQL Server 7.0)
1.建一个表结构相同的新表.
2.创建唯一型索引(应用IGNORE_DUP_KEY选项)
如你所说的表,建唯一约束如下:
CREATE UNIQUE INDEX [INDEX_NAME] ON [TABLE_NAME](title,detail)
WITH IGNORE_DUP_KEY
3.用insert ... select命令生成新表中的行.
结果就是在新表中删除了重复行.
select COL1, COL2, COL#, COUNT(*)
from <OWNER>.<TABLE_NAME>
group by COL1, COL2, COL#
having count(*) > 1;
Remove duplicate records:
delete from <OWNER>.<TABLE_NAME> a
where rowid < (
select max(rowid)
from <OWNER>.<TABLE_NAME> b
where b.COL1 = a.COL1
and b.COL2 = a.COL2
and b.COL# = a.COL#);