SQLServer中怎么删除重复数据

75次阅读
没有评论

共计 1308 个字符,预计需要花费 4 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 SQLServer 中怎么删除重复数据,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

方法一

declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) 1 open cur_rows fetch cur_rows into @id,@max while @@fetch_status=0 begin select @max = @max -1 set rowcount @max delete from 表名 where 主字段 = @id fetch cur_rows into @id,@max end close cur_rows set rowcount 0

方法二  

有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如 Name 字段重复,而其他字段不一定重复或都重复可以忽略。 

1、对于第一种重复,比较容易解决,使用复制代码 代码如下:
select distinct * from tableName

就可以得到无重复记录的结果集。如果该表需要删除重复的记录(重复记录保留 1 条),可以按以下方法删除

代码如下:
select distinct * into #Tmp from tableName drop table tableName select * into tableName from #Tmp drop table #Tmp

发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。 

2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下 假设有重复的字段为 Name,Address,要求得到这两个字段唯一的结果集

select identity(int,1,1) as autoID, * into #Tmp from tableName select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID select * from #Tmp where autoID in(select autoID from #tmp2)

最后一个 select 即得到了 Name,Address 不重复的结果集(但多了一个 autoID 字段,实际写时可以写在 select 子句中省去此列)前段时间写的如何删除 sql 数据库中重复记录是针对 sql 数据库的,最近发现有人需求 access 数据库删除重复记录的语句,发上来与大家分享。

代码如下:

 delete from 表名 where 重复字段名 in (select 重复字段名 from 表名 group by 重复字段名 having count( 重复字段名) 1) and id not in (select min(id) from 表名 group by 重复字段名 having count(重复字段名) 1)

表名和重复字段名你跟着修改成你的数据库名和字段名就可以了

关于 SQLServer 中怎么删除重复数据就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-04发表,共计1308字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)