sqlserver删除重复的数据
分享链接:
http://blog.csdn.net/s630730701/article/details/52033018
http://blog.csdn.net/anya/article/details/6407280/
http://www.myexception.cn/sql-server/350450.html
http://blog.csdn.net/u012889638/article/details/46893855
http://bbs.csdn.net/topics/370190752
暂不直接说删除问题,先说明下sqlserver不支持多字段in。举个栗子:
select *
from vitae a
where (a.peopleId,a.seq)
in (select peopleId,seq
from vitae
group by peopleId,seq
having count(*) > 1)
这种在sqlserver中就会报语法错误。
解决方案:(1)
DELETE dbo.t_test
from dbo.t_test A
WHERE A.b IN (select b
from dbo.t_test b group by b,c having COUNT(*)>1)
AND A.C IN (select c
from dbo.t_test b group by b,c having COUNT(*)>1)
and id not in(select MIN(id) from dbo.t_test group by b,c having COUNT(1)>1)
注意使用这个语句当数据量很大或者字段很多的时候会运行不了,太浪费时间
解决方案(2)
DELETE A
--select A.*
FROM dbo.t_test A ,dbo.t_test B
WHERE A.b=B.b AND A.c=B.c AND A.id !=B.id
and A.id NOT IN(select min(id) from dbo.t_test group by b,c)
我们写的 delete table where 和update table 都属于简写,全写应该是
delet A FROM TABLE A WEHRE
参考链接:http://blog.csdn.net/zyzlywq/article/details/6753648
注意delete 删除的表是紧跟在后面的表 A,在from中可以引入另一个表进行关联
我目前阶段最大的感受就是:版本问题,这真的很重要。再举个小栗子sqlserver不能使用limit


(3)使用distinct筛选出不重复的记录,保存,在删除原来的数据库。(这个我没试过,应该可以)
sqlserver删除重复的数据的更多相关文章
- SqlServer删除重复数据的方法
方法一 declare @max integer,@id integer open cur_rows fetch cur_rows into @id,@max begin set rowcount @ ...
- 《SQLServer删除重复数据的方法》
方法一: declare @max integer,@id integer open cur_rows fetch cur_rows into @id,@max begin set rowcount ...
- SQL:一句话删除重复的数据
--构造原始数据 )) --插入数据 INSERT INTO #T (N)VALUES ('A') --方式一:一句话删除重复数据(无主键) --方式二:采用CTQ,with的写法删除 ;
- c++ 链表删除重复的数据
//List.h #include <iostream> typedef int dataType; struct Node{ Node():data(),pNextNode(NULL){ ...
- SqlServer 删除重复记录
在给一个客户上线的系统里发现有一张表里出现了重复的数据,结果通过排查代码发现确实业务逻辑有问题,在修改了代码后需要将为数据库里的重复数据删除 在CSDN上找到解决方案,对线上的数据库尽量不要执行删除操 ...
- ORACLE 删除重复的数据
内容转自:https://www.cnblogs.com/zfox2017/p/7676237.html 查询及删除重复记录的SQL语句 1.查找表中多余的重复记录,重复记录是根据 ...
- sqlserver删除重复数据
select identity(int,1,1) as autoID, * into #Tmp from [QYTS_QiYeCecdb]select min(autoID) as autoID in ...
- SQLServer一次性删除重复的数据
delete from [GCPCore].[GCP.Product].[CityMall] where AreaID in(select AreaID from [GCPCore].[GCP.Pr ...
- SQLServer删除重复行
1.如果有ID字段,就是具有唯一性的字段 delect table where id not in ( select max(id) from table group by col1,col2,col ...
随机推荐
- J2SE之基础语法总结一
1.标识符: (1)简单来说凡是可以起名字的地方都叫标识符,起标识符的时候要见名知意. (2)标识符由字母.数字.美元符$和下划线组成,标识符应以字母.下划线.$开头,注意不能以数字开头. (3)ja ...
- 我们一起学Docker(一)
一.什么是Docker? Docker是一个基于LXC(Linux Container,Linux容器),以及cgroup的上层工具,通过对LXC,cgroup及相关系统命令的封装,使得用户可以非常方 ...
- jquery使用CSS3实现文字动画效果插件Textillate.js
Textillate是一款基于jquery的使用CSS3实现文字动画的小巧插件.Textillate.js集成了一些很棒的使用CSS3动画效果的 JavaScript 库,您可非常轻轻松地把这些动画效 ...
- SpringMVC4+MyBatis+SQL Server2014 基于SqlSession实现读写分离(也可以实现主从分离)
前言 上篇文章我觉的使用拦截器虽然方便快捷,但是在使用读串还是写串上你无法控制,我更希望我们像jdbc那样可以手动控制我使用读写串,那么这篇则在sqlsession的基础上实现读写分离, 这种方式则需 ...
- 跟Microsoft.AspNet.Identity学习哈希加盐法
什么是哈希加盐法? 废话少说:对于MD5这种加密算法,同样的密码每次加密后得到的密文是一样的,所以黑客可以利用已知的密码库(彩虹库)对目标数据库密文进行对比进行攻击. 怎样解决:哈希加盐法,以下是网上 ...
- [原创] 绿色单文件封装程序GreenOne V3.0
1.原理 将包含可执行文件的多个文件 调用Winrar,创建自解压格式压缩文件 设置高级自解压选项中的文本和图标,设置解压后运行的文件为选中的可执行文件. 这种创建单文件封装其实也就是一个Winrar ...
- 【MySql】——MHA+GTID+failover+binlog-server+Atlas
一.环境准备 1.mysql-db01 #系统版本 [root@mysql-db01 ~]# cat /etc/redhat-release CentOS release 6.7 (Final) #内 ...
- 玩转mongodb(九):通过log4jmongo来实现分布式系统的日志统一管理
背景 在分布式系统中,我们有多个web app,这些web app可能分别部署在不同的物理服务器上,并且有各自的日志输出.当生产问题来临时,很多时候都需要去各个日志文件中查找可能的异常,相当耗费人力. ...
- 简单五子棋,没有电脑AI
刚学了C#委托,做了个五子棋练习,把前台绘制和后台逻辑分开,前台绘制方法用委托传给后台逻辑. 界面好简单... 先看类图 控制类控制整个游戏的逻辑,包括调用棋盘类的属性初始化棋盘.初始化两个棋手.轮流 ...
- cssText的用法以及特点
cssText 本质是什么? cssText 的本质就是设置 HTML 元素的 style 属性值. cssText 怎么用? document.getElementById("d1&quo ...