数据库

 首页 > 数据库 > SqlServer > 删除数据库中重复数据的几个方法

删除数据库中重复数据的几个方法

分享到:
【字体:
导读:
         摘要: 方法一 以下为引用的内容: declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) 1 open cur_rows fetch...

删除数据库中重复数据的几个方法

方法一

以下为引用的内容:
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子句中省往此列)



删除数据库中重复数据的几个方法
分享到:
SQL2005数据库转到SQL2000的步骤
SQL2005数据库转到SQL2000的步骤 1. 天生for2000版本的数据库脚本 2005的manger studio -- 打开"对象资源治理器"(没有的话按F8), 连接到你的实例 -- 右键要转到2000的库 -- 任务 -- 天生脚本 -- 在"脚本向导"的"选择数据库"中, 断定选择的是要转到2000的库 -- 勾选"为所选数据库中的所有对象编写脚本" -- 在接下来...
通过JDBC连接DB2数据库技巧
通过JDBC连接DB2数据库技巧 关于DB2数据库的JDBC连接文章有很多,比拟出名的有诸如“JDBC数据库连接大全”和“JSP的DB2连接数据库”,固然都是很具体的材料,也都说解决了前人没有解决的标题,但还是有很多纰漏。我就这两天的经验给大家写一篇关于JDBC连接数据库的文章,以解决一部分人的疑问。 第一、JDBC是JDK的一部分(至...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……