比如:
字段名: Col_A Col_B Col_C
记录: A A A
A A A
B C D
A A A
B C D
B D D
A A A
反正就是有完全相同记录!
现在要留下完全相同记录中的一条,仅留一条,其余删除。
结果是:
字段名: Col_A Col_B Col_C
记录: A A A
B C D
B D D
要求语句尽量简洁,一定要高效!
尽管放马过来吧。
...全文
41226打赏收藏
挑战高手:SQL Server 2000, 一个表, 包含完全相同重复数据若干,怎么删除多余记录?
比如: 字段名: Col_A Col_B Col_C 记录: A A A A A A B C D A A A B C D B D D A A A 反正就是有完全相同记录! 现在要留下完全相同记录中的一条,仅留一条,其余删除。 结果是: 字段名: Col_A Col_B Col_C 记录: A A A B C D B D D 要求语句尽量简洁,一定要高效! 尽管放马过来吧。
不是阿,insert into了以后建立的table_b是永久的了。下面这个proc一次就搞定了。
create procedure sp_cleardata
as
begin
begin tran
insert into table b select distinct * from table_a
commit tran
begin tran
delete from table_a
commit tran
begin tran
insert into table a select * from table_b
commit tran
end
这种表结构怎么高效的起来?
写存储过程:
原来的表名:table_a
先insert into table b select distinct * from table_a (会产生一个和table_a结构相同的表)
然后
delete from table_a;
最后
insert into table_a select * from table_b
ORACLE中是非常容易解决的,用ROWID就行了。
delect from mytable x
where rowid <> (select max(rowid)
from mytable y
where y.field1 = x.field1
and y.field2 = x.field2
.....
);