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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLserver数据库中所有字段全部一样的重复数据如何删除?相关的知识,希望对你有一定的参考价值。

将本数据库中的数据原本是导出到另外一个数据库中,但是忘了选择目标数据库,导致数据仍然是导出到了本数据库中,所有的数据都重复了,现在如何删除
也不能直接从数据库中删除,会报图中错误。可以考虑一条一条记录删除。谢谢
已解决
执行如下语句即可
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp

找到最大的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

参考技术A 回滚吧!
如果不能回滚,就自己写一个简单的java程序,判断ActionName是否相等,如果数据相同就删除,不是太难 。
参考技术B select distinct 字段1,字段2......字段N into talbe2 from table1
drop table1
rename talbe2 to table1

按这个思路就可以作了本回答被提问者采纳

SqlServer中创建非聚集索引和非聚集索引

聚集索引与非聚集索引,其实已经有很多的文章做过详细介绍。

非聚集索引

简单来说,聚集索引是适合字段变动不大(尽可能不出现Update的字段)、出现字段重复率小的列,因为聚集索引是对数据物理位置相同的索引,所以一张表中只能出现一个聚集索引。

聚集索引的特征:代表全部数据存储的位置索引,不能经常去更新这个字段,最好不出现重复。

聚集索引

非聚集索引也有很多人叫法上细分为唯一索引、全文索引、普通索引,我们在进项条件查询时,作为条件过滤的字段通常被设置为非聚集索引,这样就不需要去读取原始记录,直接查询索引将大大的节省时间。

非聚集索引的特征:不影响数据存储的物理顺序,对字段的修改、删除、新增来说影响不大,这样我们就可以把常错做的字段并且有需要快速查询的字段定位非聚集索引

不正确建聚集索引的影响:可能会导致每次插入数据都要重新编排索引位置,导致数据的写入极慢。

创建聚集索引

Use log
CREATE CLUSTERED  INDEX 索引名 on 表名(字段名)--创建聚集索引

创建非聚集索引

Use log--使用的库
CREATE NONCLUSTERED INDEX 索引名称 --创建非聚集索引名称
ON 表名(字段名) --为IM_LogSearch表的Keywords字段创建索引
WITH FILLFACTOR = 30 --填充因子为30%
GO

最后这个填充因子主要是在一些字段中我们可以根据读写比例来灵活调整,以便更大的发挥出索引的特性。

填充因子可以参考:

低更改的表(读写比率为100:1):100%的填充因子
高更改的表(写超过读):50-70%的填充因子
读写各一半的:80-90%的填充因子

 



以上是关于SQLserver数据库中所有字段全部一样的重复数据如何删除?的主要内容,如果未能解决你的问题,请参考以下文章

使用sql server 怎么查重复数据

SqlServer中创建非聚集索引和非聚集索引

oracle用rowid去掉重复值

如何在oracle数据库中的表里批量插入记录

求问SQLServer多个表中将重复的数据提取到新表,并统计重复次数

sqlServer查看某值是不是在一个字段中存在