SQLserver数据库中所有字段全部一样的重复数据如何删除?

2025-01-05 15:14:11
推荐回答(3个)
回答1:

找到最大的rowid即可。 

Sql代码:

alter proc getNotDupData  
as  
  
--clear temp table  
delete ODS.dbo.Agent  
delete from stage.dbo.tmpDup  
delete from stage.dbo.tmpRowNo  
delete from stage.dbo.tmpMaxRowNo  
--create dup table  
insert into stage.dbo.tmpDup  
select distinct AgentLogin,AgentSurName,AgentGivenName   from stage.dbo.dAgentPerformanceStat  
where AgentSurname is not null and agentlogin like '3%'  order by AgentLogin  
  
--add rowNo  
insert into tmpRowNo  
select *,ROW_NUMBER()over(order by AgentLogin) as rowno  from tmpDup   
  
--get max rowno  
insert into  stage.dbo.tmpMaxRowNo  
select max(rowno) as 'rowno'   from stage.dbo.tmpRowNo  group by AgentLogin having count(*)>1  
  
--remove max rowno  
delete from stage.dbo.tmpRowNo where  rowno in (select * from stage.dbo.tmpMaxRowNo)  
  
--insert into ods  
insert into ODS.dbo.Agent select AgentLogin,AgentSurName,AgentGivenName from stage.dbo.tmpRowNo

回答2:

回滚吧!
如果不能回滚,就自己写一个简单的java程序,判断ActionName是否相等,如果数据相同就删除,不是太难 。

回答3:

select distinct 字段1,字段2......字段N into talbe2 from table1
drop table1
rename talbe2 to table1

按这个思路就可以作了