如何在MSSQL删除多条重复数据

原创 2006年05月19日 11:50:00
id ColA ColB
1 12345 ABCD
2

12345

ABCD
当出现这种数据的时候,想要删除某条数据,怎么操作呢?
关键是找出重复的其中的一条,
如下:

SELECT max(id) as id, a.cola,a.colB
FROM a join 
(
SELECT cola,colb   FROM a  GROUP BY cola, colb
HAVING COUNT(*> 1)  b
on a.filecode = b.filecode and a.colb=b.colb
group by a.col1,a.colB


然后删除即可.

删除数据库中重复数据的几个方法
  数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……
  方法一
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子句中省去此列)

 

MSSQL删除表中已有的重复数据,保留一条数据

MSSQL删除重复数据,保留一条数据.
  • arcticJian
  • arcticJian
  • 2015年10月15日 17:02
  • 902

MSSQL如何在没有主键的表中删除重复数据

为了对重复数据进行实验,下面建一个设计不太好(没有主键)表并插入了一些重复数据: create database testdb use testdb ; go create table Dup...
  • dulo2005
  • dulo2005
  • 2016年04月27日 23:31
  • 496

Sql Server 查询多条重复数据 删除并保留一条

总是不会查重和删除多余数据 delete sysdba.PRODUCT from sysdba.PRODUCT a where exists (select Name,ACTUALID...
  • lutaotony
  • lutaotony
  • 2016年09月28日 17:15
  • 1831

数据库删除完全重复的数据,针对每条重复的数据只保留一条

出现脏数据有时是很头疼的事情,特别是数据比较多,而且表结构比较复杂的。 最近就遇到一个奇葩问题,数据库主键约束不知道被谁删掉了,然后数据库中就出现了很多完全一样的数据,当然这里也包括主键,因为主键约...
  • baidu_18607183
  • baidu_18607183
  • 2018年01月09日 20:09
  • 43

SQL删除表中的重复记录(多个字段),只留一条。

在一家韩国电商的面试中被问到了,当时一脸懵逼,没想法…… 回来想了想,还是有些思路的……唉……临场真是弱啊…… 第一步:查询重复记录 SELECT * FROM TableName WHERE ...
  • sinat_36246371
  • sinat_36246371
  • 2016年10月13日 13:35
  • 1268

数据库中删除表中重复数据的一点心得

在一个表中有一个自动增长列c1,同时又有两个外健列分别指向另外两个标的主键c2,c3,突然有一天我想让c2与c3组合为一个唯一键,这个时候先必须删除关于c2与c3的重复键(因为c1不可能重复),这就是...
  • tz_xiong
  • tz_xiong
  • 2007年10月26日 01:27
  • 3909

如何用insert或update在同一表中插入或更新多条记录

  ssdhqydhcpdmInputYearMonthbdj1bdj1jdjtdj3816610020220060710010012011038144200101200607111.10.83816...
  • iloveyoubaby
  • iloveyoubaby
  • 2008年09月09日 16:42
  • 1906

MySQL删除没有主键的表中的重复记录,只保留一条记录

如果在设计表时没有指定主键, 导入数据时可能出现重复导入, 导致一个表中出现多条完全相同的多条记录。 以下是解决这个问题的思路: 使用distinct语句筛选出不重复的记录存入临时表tmp; c...
  • qq_20477309
  • qq_20477309
  • 2017年10月12日 16:02
  • 281

MSSQL查询不重复记录

  由于设计需要,需要查询不重复的记录值,同类问题,想必大家都遇到过,于是乎马上GOOGLE一下,发现此类问题还挺多,解决方案也不少,仔细看看。例如有如下表结构和值tablefid   name s...
  • he21he21
  • he21he21
  • 2009年01月03日 19:45
  • 1312

php利用数组函数,查询并删除数据库多列重复数据

  • xxzqyall
  • xxzqyall
  • 2011年01月18日 13:30
  • 2558
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何在MSSQL删除多条重复数据
举报原因:
原因补充:

(最多只允许输入30个字)