查询及删除重复记录的SQL语句

1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断

select * from 表 where Id in (select Id from 表 group by Id having count(Id) > 1)

2、删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最小的记录

DELETE from 表 WHERE (id) IN ( SELECT id FROM 表 GROUP BY id HAVING COUNT(id) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM 表 GROUP BY id HAVING COUNT(*) > 1);

3、查找表中多余的重复记录(多个字段)

select * from 表 a

where (a.Id,a.seq) in (select Id,seq from 表 group by Id,seq having count(*) > 1)

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录

delete from 表 a

where (a.Id,a.seq) in (select Id,seq from 表 group by Id,seq having count(*) > 1)

and rowid not in (select min(rowid) from 表 group by Id,seq having count(*)>1)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录

select * from 表 a

where (a.Id,a.seq) in (select Id,seq from 表 group by Id,seq having count(*) > 1)

and rowid not in (select min(rowid) from 表 group by Id,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

)

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

Oracle重复数据只删除一条,解决Oracle删除重复数据只留一条的方法详解相关推荐

  1. 删除oracle数据库的三种方法,oracle数据库的删除方法详解

    oracle数据库的删除方法详解 1.图形界面删除 练习之前记得创建快照 执行命令之前要保证数据库属于open状态 SQL> alter database open; [oracle@local ...

  2. 解决C#程序只允许运行一个实例的几种方法详解

    解决C#程序只允许运行一个实例的几种方法详解 参考文章: (1)解决C#程序只允许运行一个实例的几种方法详解 (2)https://www.cnblogs.com/randyzhuwei/p/5403 ...

  3. mysql-bin 查看_Mysql Binlog数据查看的方法详解

    binlog介绍 binlog,即二进制日志,它记录了数据库上的所有改变. 改变数据库的SQL语句执行结束时,将在binlog的末尾写入一条记录,同时通知语句解析器,语句执行完毕. binlog格式 ...

  4. html页面在ie上出现404怎么解决,ie浏览器网页上有错误解决方法详解

    ie浏览器网页上有错误解决方法详解 最近网友反馈我的浏览器左下角总显示"网页上有错误",我已经修复过IE了,可是不管用.然后在浏览器上看不到网上的视频和图片的播放.在QQ空间上输入 ...

  5. 绝地腾讯手游登入显示服务器满了,绝地求生刺激战场注册已满什么意思 注册已满解决方法详解[多图]...

    绝地求生刺激战场2月9日正式开启全平台测试,不过有许多玩家出现注册已满的情况,无法进行游戏,下面安族小编给大家介绍一下注册已满解决方法详解. 绝地求生刺激战场今日注册上限解决办法 有玩家在网上说自己早 ...

  6. Dede后台验证码不显示解决方法详解

    1检查看看有没有开启gd,用<?php phpinfo();?>检查. 2在include/common.inc.php打开错误报告error_reporting(E_ALL); // 报 ...

  7. python连接oracle数据库的方法_Python3.6连接Oracle数据库的方法详解

    本文实例讲述了Python3.6连接Oracle数据库的方法.分享给大家供大家参考,具体如下: 下载cx_Oracle模块模块: https://pypi.python.org/pypi/cx_Ora ...

  8. java解析日志数据_Java实时监控日志文件并输出的方法详解

    Java实时监控日志文件并输出的方法详解 想在前台显示数据同步过程中产生的日志文件,在网上找到解决方案,做了代码测试好用.这里做个记录 java.io.RandomAccessFile可以解决同时向文 ...

  9. oracle tns 代理配置_oracle数据库tns配置方法详解

    TNS简要介绍与应用 Oracle中TNS的完整定义:transparence Network Substrate透明网络底层,监听服务是它重要的一部分,不是全部,不要把TNS当作只是监听器. TNS ...

  10. python清空集合_python集合删除多种方法详解

    这篇文章主要介绍了python集合删除多种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 删除指定的元素 A={'a','c','b','d ...

最新文章

  1. 揭开ITIL 4的神秘面纱,引领企业数字化转型
  2. mysql函数包含的意思_MYSQL函数
  3. VOA AGRICULTURE REPORT - Two Efforts Seek to Increase Food Security in Africa
  4. 电脑技巧:电脑卡顿的4个优化小技巧,太有用了!
  5. log4j自定义配置文件(SpringMVC项目)
  6. Phoenix 关联查询异常 , MaxServerCacheSizeExceededException phoenix.query.maxServerCacheBytes
  7. mysql增备脚本--xtrabackup实现
  8. linux提取声卡的codec教程,发个菜鸟提取声卡codec文件图文教程,老手就别看了,小心被骂!...
  9. 通过CMD命令行获取文件夹下的所有文件名称(电脑小白专用)
  10. Google的特殊功能
  11. PCB Layout 注意事项——布线
  12. 计算机表格怎么算加减,excel表格数据的加减-excel表格怎么自动计算加减
  13. 用spss进行数据的标准化处理_SPSS统计分析案例:数据标准化
  14. 程序员如何规划自己的职业生涯
  15. git提交代码时账号或密码错误
  16. 运筹说 第55期丨整数规划先驱——Ralph Gomory
  17. ALGORITHMIC COMPOSITION AS A MODEL OF CREATIVITY
  18. 拼多多推广没有曝光怎么办?
  19. Hisat2-Stringtie-DESeq2复现Transcript-level expression analysis of RNA-seq experiments with ...
  20. Android辅助功能 Accessibility Services基本用法笔记

热门文章

  1. 上海市科技小巨人工程实施办法
  2. linux下MQTT介绍和开发
  3. php 批量结算订单管理,php-在Woocommerce中处理管理订单列表上的自定义批量操作...
  4. matlab里设置colorbar类型,matlab colorbar 样式问题
  5. 微信小程序删除数组指定元素
  6. 仅一所大学报考人数就4.3万!985四川大学研究生报考人数超多!
  7. (十四)桥接模式详解(都市异能版) - 转
  8. GetMapping无法解析
  9. 如何提取pandas.DataFrame数据表中某一列的类别
  10. 看人机对话技术一步步突破与发展