|
|
 |
专题栏目 |
 |
 |
相关文章 |
 |
|
|
|
|
 |
SQL Server中删除重复数据的几个方法 |
热 |
|
| SQL Server中删除重复数据的几个方法 |
|
作者:blog 文章来源:不详 点击数: 更新时间:2007-11-14 13:13:50  |
|
数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……
方法一
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子句中省去此列)
|
|
| 文章录入:mintao 责任编辑:mintao |
|
|
上一篇文章: SQL Server存储过程编写和优化措施 下一篇文章: SQL Server日志清除的两种方法 |
|
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网] |
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| |
|
|
|
|