删除数据库中重复记录

原创 2006年06月07日 14:32:00

看到很多问题都是关于删除数据库重复记录的。

下面我来说一下实现这个的语句。(呵呵。。。说的不对的请各位多多指教。)

 Start:

数据重复记录一般情况下我分为两种:一种是有自增ID的,另一种是没有的。

我分别来说明一下。先说有自增ID的:

Delete tb where id not in (select min(id) from tb group by field1,...,fieldn)

field1,...,fieldn就是重复的字段。

这样就OK了。

没有自增ID的:这种比较麻烦些。

先把数据放到临时表中。

select identity(int,1,1) as tempid,* into #temp from tb

delete #temp where tempid not in (select min(id) from #temp group by field1,...,fieldn)

delete tb insert into tb select field1,...,fieldn from #temp

/*注意上面这两句,是把原来表中数据删除后插入临时表中除临时ID以外的所有数据。*/

drop table #temp --删除临时表

以上就是我用的方法。如果有什么地方不对的请留言。

附:

如果要保留的是最新的记录就把min(id)换成max(datetime) 前面的ID也换成datetime not in

如何删除数据库中的重复记录(一)

今天去西安一家公司去面试,其中有一道面试题是这样的:“如何删除在数据表中完全相同的记录,如果两条相同的记录主键不同,那么又应该如何删除” ,当时因为是很简单的题目就直接用sql语句完成,面试官看了之后...
  • sxb0841901116
  • sxb0841901116
  • 2014年02月28日 19:49
  • 863

数据库重复记录删除

重复的数据可能有这样两种情况,第一种: 表中只有某些字段一样,第二种是两行记录完全一样。  一、对于部分字段重复数据的删除  1.查询重复的数据    select 字段1,字段2, count...
  • baoendemao
  • baoendemao
  • 2014年10月26日 18:45
  • 343

数据库删除重复记录的sql

查找所有重复标题的记录: SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE T...
  • semial
  • semial
  • 2015年09月14日 16:37
  • 442

如何删除数据库中的重复记录

如何删除数据库中的重复记录? 一、题外篇 今天很悲催啊,给用户数据做datapatch的时候,每个月的数据多导入了一份,瞬间惊出一身冷汗... 这可是产品环境,要是被老板知...
  • xx_oo000
  • xx_oo000
  • 2014年05月09日 17:24
  • 259

Oracle快速删除表中重复数据——适用百万级数据

Oracle删除表中重复数据有多种方法,网上较多的一种如下: delete from gljyjl jl where (jl.djbbh,jl.bgsbh) in (select djbbh,bgs...
  • u010577497
  • u010577497
  • 2016年06月04日 15:23
  • 1458

如何删除数据库中的重复记录?

一、题外篇 今天很悲催啊,给用户数据做datapatch的时候,每个月的数据多导入了一份,瞬间惊出一身冷汗...这可是产品环境,要是被老板知道了可就死定了,赶紧去掉重复的记录,同时写下下面的文章以备...
  • zdp072
  • zdp072
  • 2014年05月09日 12:11
  • 1135

删除mysql数据库中的重复记录

表结构: mysql> desc demo; +-------+------------------+------+-----+---------+----------------+ | ...
  • anhui_ming
  • anhui_ming
  • 2013年04月22日 17:30
  • 355

MySQL查询重复字段,及删除重复记录的方法

MySQL查询重复字段,及删除重复记录的方法(转) Submitted by wiley on Thu, 09/03/2009 - 09:36 [教学] MySQL查询...
  • Donthan
  • Donthan
  • 2013年04月11日 02:19
  • 30344

MySql-如何查询删除数据表重复记录

查询SELECT name, email, COUNT(*) FROM users GROUP BY name, email HAVING COUNT(*) > 1重...
  • alexdamiao
  • alexdamiao
  • 2016年05月19日 17:16
  • 3676

MySQL之——查询重复记录、删除重复记录方法大全

查找所有重复标题的记录: SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ...
  • l1028386804
  • l1028386804
  • 2016年06月22日 13:30
  • 24283
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:删除数据库中重复记录
举报原因:
原因补充:

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