Oracle重复数据只删除一条,解决Oracle删除重复数据只留一条的方法详解
查询及删除重复记录的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删除重复数据只留一条的方法详解相关推荐
- 删除oracle数据库的三种方法,oracle数据库的删除方法详解
oracle数据库的删除方法详解 1.图形界面删除 练习之前记得创建快照 执行命令之前要保证数据库属于open状态 SQL> alter database open; [oracle@local ...
- 解决C#程序只允许运行一个实例的几种方法详解
解决C#程序只允许运行一个实例的几种方法详解 参考文章: (1)解决C#程序只允许运行一个实例的几种方法详解 (2)https://www.cnblogs.com/randyzhuwei/p/5403 ...
- mysql-bin 查看_Mysql Binlog数据查看的方法详解
binlog介绍 binlog,即二进制日志,它记录了数据库上的所有改变. 改变数据库的SQL语句执行结束时,将在binlog的末尾写入一条记录,同时通知语句解析器,语句执行完毕. binlog格式 ...
- html页面在ie上出现404怎么解决,ie浏览器网页上有错误解决方法详解
ie浏览器网页上有错误解决方法详解 最近网友反馈我的浏览器左下角总显示"网页上有错误",我已经修复过IE了,可是不管用.然后在浏览器上看不到网上的视频和图片的播放.在QQ空间上输入 ...
- 绝地腾讯手游登入显示服务器满了,绝地求生刺激战场注册已满什么意思 注册已满解决方法详解[多图]...
绝地求生刺激战场2月9日正式开启全平台测试,不过有许多玩家出现注册已满的情况,无法进行游戏,下面安族小编给大家介绍一下注册已满解决方法详解. 绝地求生刺激战场今日注册上限解决办法 有玩家在网上说自己早 ...
- Dede后台验证码不显示解决方法详解
1检查看看有没有开启gd,用<?php phpinfo();?>检查. 2在include/common.inc.php打开错误报告error_reporting(E_ALL); // 报 ...
- python连接oracle数据库的方法_Python3.6连接Oracle数据库的方法详解
本文实例讲述了Python3.6连接Oracle数据库的方法.分享给大家供大家参考,具体如下: 下载cx_Oracle模块模块: https://pypi.python.org/pypi/cx_Ora ...
- java解析日志数据_Java实时监控日志文件并输出的方法详解
Java实时监控日志文件并输出的方法详解 想在前台显示数据同步过程中产生的日志文件,在网上找到解决方案,做了代码测试好用.这里做个记录 java.io.RandomAccessFile可以解决同时向文 ...
- oracle tns 代理配置_oracle数据库tns配置方法详解
TNS简要介绍与应用 Oracle中TNS的完整定义:transparence Network Substrate透明网络底层,监听服务是它重要的一部分,不是全部,不要把TNS当作只是监听器. TNS ...
- python清空集合_python集合删除多种方法详解
这篇文章主要介绍了python集合删除多种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 删除指定的元素 A={'a','c','b','d ...
最新文章
- 深入浅出卷积神经网络及实现!
- svn TortoiseSVN 回滚版本
- [数据结构]-散列表(哈希表)
- 什么时候应该将花括号用于ES6导入?
- livebos--流程节点判断
- 【Java 网络编程】TCP 简介
- 不用 IDE 手工创建、开发、编译、安装 Android 应用程
- delphi json
- RFI远程文件包含的漏洞
- 字节与浮点型转换软件_如何与另一个防病毒软件一起运行恶意软件字节
- 经典排序算法(2)——快速排序算法详解
- 【编程】常见概念的理解 —— inplace、vanity url、vanilla(code/software)、编译、链接、build、(delegate、proxy)
- 通俗易懂地讲解 __block 变量
- aqua datastudio配置
- 10分钟带你读完人工智能的三生三世
- 层次分析法java_AHP层次分析法java实现
- Azure Kinect微软摄像头Unity开发小结
- 在移动开发快捷推广方式
- 期货居间人一年能赚多少?期货居间人开户手续费有什么优势?
- 两边双虚线是什么意思_两条双黄虚线什么意思