如何删除表中的重复记录?
来源:互联网 发布:剑灵灵女萌妹子数据 编辑:程序博客网 时间:2024/06/07 16:30
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
--测试数据
/*-----------------------------
select*fromtt
-----------------------------*/
id pid
----------------------
1 1
1 1
2 2
3 3
3 3
3 3
(所影响的行数为6行)
首先,如何查询table中有重复记录
select*,count(1)asrownum
fromtt
groupbyid,pid
havingcount(1)>1
id pid rownum
---------------------------------
1 1 2
3 3 3
(所影响的行数为2行)
方法一:使用distinct和临时表
ifobject_id('tempdb..#tmp')isnotnull
droptable#tmp
selectdistinct*into#tmpfromtt
truncatetablett
insertintottselect*from#tmp
方法二:添加标识列
altertablettaddNewIDintidentity(1,1)
go
deletefromtt whereexists(select1fromttawhere a.newid>tt.newidandtt.id=a.idandtt.pid=a.pid)
go
altertablettdropcolumnNewID
go
--测试结果
/*-----------------------------
select*fromtt
-----------------------------*/
id pid
----------------------
1 1
2 2
3 3
(所影响的行数为3行)
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
--测试数据
/*-----------------------------
select*fromtt
-----------------------------*/
id pid
----------------------
1 1
1 1
2 2
3 3
3 3
3 3
(所影响的行数为6行)
首先,如何查询table中有重复记录
select*,count(1)asrownum
fromtt
groupbyid,pid
havingcount(1)>1
id pid rownum
---------------------------------
1 1 2
3 3 3
(所影响的行数为2行)
方法一:使用distinct和临时表
ifobject_id('tempdb..#tmp')isnotnull
droptable#tmp
selectdistinct*into#tmpfromtt
truncatetablett
insertintottselect*from#tmp
方法二:添加标识列
altertablettaddNewIDintidentity(1,1)
go
deletefromtt whereexists(select1fromttawhere a.newid>tt.newidandtt.id=a.idandtt.pid=a.pid)
go
altertablettdropcolumnNewID
go
--测试结果
/*-----------------------------
select*fromtt
-----------------------------*/
id pid
----------------------
1 1
2 2
3 3
(所影响的行数为3行)
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 如何删除表中的重复记录?
- 如何删除表中的重复记录?
- 如何删除表中的重复记录?
- 删除表中的重复记录
- 删除表中的重复记录
- 删除表中的重复记录
- 删除表中的重复记录
- 删除表中的重复记录
- 删除表中的重复记录
- 删除表中的重复记录
- 如何删除表中的重复记录只保留其中一条?
- 如何删除表中的重复记录只保留其中一条?
- 如何删除表中的重复记录只保留其中一条
- 如何删除表中的重复记录只保留其中一条
- 如何有条件的查询或删除表中的重复记录
- 如何快速删除Oracle中的重复记录??
- 如何快速删除Oracle中的重复记录??
- 如何删除数据库中的重复记录?
- 彻底搞清楚librarycachelock的成因和解决方法(一)
- 给新入职朋友的一点分享
- PowerDesign9.5+中的GTL解决大问题
- 爬虫技术
- 求最大公约数最小公倍数
- 如何删除表中的重复记录?
- Linux/Unix环境下的Make和Makefile详解
- librarycachelock的解决案例
- 蜘蛛/爬虫程序的多线程控制(C#语言)
- 使用sql-server进行分布式查询(链接服务器)
- NS相关的工具和资源
- 正则表达式获取HTML标记中的内容(C#)
- Oracle中找出无用的索引提高DML性能
- JSP的内置对象的调用函数介绍