首先,你的表设计就有问题。存在两行完全相同的数据。在设计表时,要设计一个primary key,主键。在维护数据方面,比较方便。
你用临时表,表变量的方式临时存储数据。再更新表内容。
用关键字distinct过滤掉重复的记录
select distinct * #t from a
insert into a
select * from #t
drop table #t
这样能除去重复的数据。
根据你的描述,group by 都不用了。
只进行一步操作是不太可能,借助临时表吧
create table table_tmp as select 字段1,字段2,字段3,字段4 from tablename group by 字段1,字段2,字段3,字段4;
然后清楚原表数据
truncate table tablename;
然后将临时表数据插入
insert into tablename select * from table_tmp
字段1,2,3,4是我起的,你表里有几个字段你写几个字段好了
1.按原表的表结构建个新的临时表
2.将原表中的重复数据各插入一条至临时表
insert into Tb_tmp select 字段1,字段2,字段3,……字段n from 表A group by 字段1,字段2,字段3,……字段n having count(*)>1
3.删除原表中的重复数据
4.将临时表数据导入至原表。
因为不知道你A表的字段。这里假如A表有字段ID,Name,Age
如果 Name,Age重复,要去掉重复的
Delete T From
(Select Row_Number() Over(Partition By Name,Age ORDER BY ID ASC) As RowNumber From A) T
Where T.RowNumber > 1
有哪些字段重复就用这些字段分组。就是Partition 后面的字段。
设置一个除id之外唯一的字段,就可以有效避免这种问题