【转】SQL删除重复数据方法

例如:
id           name         value
1               a                 pp
2               a                 pp
3               b                 iii
4               b                 pp
5               b                 pp
6               c                 pp
7               c                 pp
8               c                 iii
id是主键
要求得到这样的结果
id           name         value
1               a                 pp
3               b                 iii
4               b                 pp
6               c                 pp
8               c                 iii

方法1
delete   YourTable  
where   [id]   not   in   (
select   max([id])   from   YourTable  
group   by   (name   +   value))

方法2
delete   a
from   表   a   left   join(
select   id=min(id)   from   表   group   by   name,value
)b   on   a.id=b.id
where   b.id   is   null



查询及删除重复记录的SQL语句
查询及删除重复记录的SQL语句
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select   peopleId from   people group by   peopleId having count(peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people
where peopleId in (select   peopleId from people group by   peopleId   having count(peopleId) > 1)
and rowid not in (select min(rowid) from   people group by peopleId having count(peopleId )>1)
3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in   (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in   (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where (a.peopleId,a.seq) in   (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
(二)
比方说
在A表中存在一个字段“name”,
而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select Name,Count(*) From A Group By Name Having Count(*) > 1
如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1

(三)
方法一
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子句中省去此列)
(四)
查询重复
select * from tablename where id in (
select id from tablename
group by id
having count(id) > 1
)

转自 http://www.cnblogs.com/sunxiaonan/archive/2009/11/24/1609439.html

转载于:https://www.cnblogs.com/dieaz5/p/3497976.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python批处理栅格转点_python获取栅格点和面值的实现

1、获取指定位置的点值:OutputFile open(statisticResultTXT, w)cellvaluearcpy.GetCellValue_management(inputfilepathfilenname".tif",staionXY, "1")OutputFile.write(stationID"_"filenname""str(cellvalue)\n)Outpu…

看看别人的演讲

淘宝:http://www.w3cmark.com/2014/137.html 转载于:https://www.cnblogs.com/gaoxue/p/4330728.html

jsp中获取WebContent路径

方法一&#xff1a; 1 <script type"text/javascript" src"../js/data.js"></script> 方法2&#xff1a; 1 <% 2 String path request.getContextPath(); 3 String basePath request.getScheme()"://"request.getServerName()&…

layui文本框填充值_layui输入框中只允许输入整数的实现方法

如下所示&#xff1a;//转化正整数function zhzs(value){value value.replace(/[^\d]/g,);if(!value){value parseInt(value);}return value;}其他的正则function clearNoNum(obj){obj.value obj.value.replace(/[^\d.]/g,""); //清除“数字”和“.”以外的字符ob…

YQL获取天气

$(function () { $.getJSON("http://query.yahooapis.com/v1/public/yql?callback?", { q: "select * from json where urlhttp://m.weather.com.cn/data/101210101.html", format: "json" }, function (data) { if (data.query.results) { v…

如何判断平台工具集去做条件编译(VC++目录、预处理器定义、$(PlatformToolsetVersion))...

作者&#xff1a;zyl910 从VS2010开始&#xff0c;提供了一个平台工作集&#xff08;Platform ToolSet&#xff09;选项用于配制vc编译版本。到了VS2012&#xff0c;更是因为默认平台工具集不支持WindowsXP&#xff0c;导致经常需要切换到xp版平台工具集&#xff0c;VS2013也是…

gerber文件怎么导贴片坐标_利用Gerber文件生成贴片坐标及元件位置图的方法技巧...

利用Gerber文件生成贴片坐标及元件位置图的方法技巧利用Gerber文件生成贴片坐标及元件位置图的方法技巧2010-10-11 21:59Gerber文件是所有电路设计软件都可以产生的文件&#xff0c;在电子组装行业又称为模版文件(stencil data),在PCB制造业又称为光绘文件。可以说Gerber文件是…

c#语言基础编程-转义符

C#转义字符: 引言 为了在程序中能够控制字符的输出以及区分开双引号和单引号&#xff08;双引号和单引号在程序中标示里面的内容为字符串和字符&#xff09;&#xff0c;所以用一种特殊的字符常量&#xff1b;是以反斜线”\”开头&#xff0c;后跟一个或几个字符。让其具有特定…

SQL语言的分类

SQL语言的分类 SQL语言共分为四大类&#xff1a;数据查询语言DQL&#xff0c;数据操纵语言DML&#xff0c; 数据定义语言DDL&#xff0c;数据控制语言DCL。 1 数据查询语言DQL Q Query 数据查询语言DQL用于检索数据库基本结构是由SELECT子句&#xff0c;FROM子句&#xff0c;…

图片图层隐写_【软件】imageIN · 图影-隐藏文件到图片,简单轻快的图片隐写工具...

还记得以前的图种制作吗&#xff0c;今天给大家分形下一个相关的工具。度盘下载(imageIN Beta1.0 (2.18MB)) &#xff1a;pan.baidu.com/s/1hqve8YS官网下载&#xff1a;本地下载这是一个能把图片中嵌入文件、文本、隐藏水印的隐写工具这种嵌入是基于图像本身的而不是基于文件的…

使用eclipse进行web开发的3个lib文件夹

1、右击project>Build Path>Configure Build Path&#xff08;一般是在你的项目文件夹中手动创建一个lib文件夹&#xff0c;里面设置若干子文件夹存放不同的jar包&#xff0c;然后通过Configure Build Path导入&#xff09; 存放&#xff1a;eclipse用来编译java文件、编…

mysql 密码长度约束_MySQL简单操作【1、在cmd下MySQL的运行及简单增删改查】

上篇文章介绍了在Windows10下安装MySQL&#xff0c;本篇文章介绍cmd下简单的操作。1、登录 MySQL当 MySQL 服务已经运行时, 我们可以通过 MySQL 自带的客户端工具登录到 MySQL 数据库中, 首先打开命令提示符, 输入以下格式的命名:mysql -h 主机名 -u 用户名 -p参数说明&#xf…

asp.net中,%#%,%=%和%%分别是什么意思,有什么区别

在asp.net中经常出现包含这种形式<%%>的html代码,总的来说包含下面这样几种格式&#xff1a; 一. <%%> 这种格式实际上就是和asp的用法一样的&#xff0c;只是asp中里面是vbscript或者javascript代码&#xff0c;而在asp.net中是.net平台下支持的语言。 特别注意:…

mysql十大报错_MySQL十大报错函数

1.Floor()round() 遵循四舍五入把原值转化为指定小数位数&#xff0c;如&#xff1a;round(1.45,0) 1;round(1.55,0)2floor()向下舍入为指定小数位数 如&#xff1a;floor(1.45,0) 1;floor(1.55,0) 1ceiling()向上舍入为指定小数位数 如&#xff1a;ceiling(1.45,0) 2;ceili…

.NET Framework 4 不能先解压再使用setup.exe安装的解决方法

微软.NET Framework离线安装包有时无法做到断网离线安装&#xff0c;仍然需要下载某些文件后才能继续安装&#xff0c;速度慢不说&#xff0c;安装前还必须要联网。 这时就可以自己用7z什么的解压微软的安装包&#xff0c;然后收集整合要下载的文件后&#xff0c;就可以通过解压…

密码强度正则

6位数字字母特殊字符 |6位数字、字母、特殊字符两两组合 | 6位 var threeRegex new RegExp("^(?.{6,})(?.*[a-zA-Z])(?.*[0-9])(?.*\\W).*$", "g"); var twoRegex new RegExp("^(?.{6,})(((?.*[a-zA-Z])(?.*\\W))|((?.*[0-9])(?.*\\W))|((…

laravel mysql 队列_Laravel 队列使用

Laravel 队列使用1.修改根目录.env文件的 **QUEUE_CONNECTION **字段配置为 databaseLaravel可配置多种队列驱动&#xff0c;包括 "sync", "database", "beanstalkd", "sqs", "redis", "null"(具体参见app/config…

高手速成android开源项目【项目篇】

主要介绍那些Android还不错的完整项目&#xff0c;目前包含的项目主要依据是项目有意思或项目分层规范比较好。Linux项目地址&#xff1a;https://github.com/torvalds/linuxAndroid项目地址&#xff1a;https://android.googlesource.com/或https://github.com/android以上两个…

Swift基础语法: 30 - Swift的基类, 子类, 重写, 重写方法, 重写属性, 防止重写

前面我们讲了有关于脚本语法的基本认识以及使用, 现在让我们来看看Swift的其他东西: 1.基类 所谓的基类, 就是OC中的父类, 不继承任何类, 就叫做基类, 让我们来看看例子: class Vehicle {var currentSpeed 0.0var description: String {return "traveling at \(currentSp…

机器学习1k近邻

自己一直学习计算机视觉方面的东西&#xff0c;现在想学习一下数据挖掘跟搜索引擎&#xff0c;自己基础也有点薄弱&#xff0c;看朱明的那本数据挖掘&#xff0c;只能片面的了解这个数据挖掘。不过最近有一本书 机器学习实战&#xff0c;于是乎通过实战的形式了解一下基本的算法…