Oracle删除重复数据记录
删除重复记录,利用ROWID 和MIN(或MAX)函数, ROWID在整个数据库中是唯一的,由Oracle自己产生和维护,并唯一标识一行(无论该表中是否有主键和唯一性约束),ROWID确定了每条记录在哪个数据文件、哪个块上。
利用not in:
delete from manager
where ROWID NOT IN( select MIN(ROWID) from manager group by mgrno);
删除之前的数据:
SQL> select * from manager;
MGRNO MNAME JOB
---------- ------------------------------ --------------------------
SALARY
--------------------------------------------------------------------
11 Jane j1
1000
11 Jane j2
1000
12 Dane j1
1200
11 Jane j1
1000
13 Kate j0
1300
删除后:
SQL> select * from manager;
MGRNO MNAME JOB
---------- ------------------------------ ------------------------------
SALARY
---------------------------------------------------------------------------
11 Jane j1
1000
12 Dane j1
1200
13 Kate j0
1300
已选择3行。
利用不等于
delete from manager a where ROWID != (select MAX(ROWID)
from manager b where a.mgrno =b.mgrno)
利用临时表:
创建一个临时表 tem_manager , 该表中存放的数据和表manager 的相同,只是该表中不存放重复记录。
create table tem_manager
as
(select distinct mgrno,mname,job,salary from manager);
然后删除表manager中的数据:
truncate table manager;
把临时表中的数据插入到原来的表manager中:
insert into manager
select * from tem_manager;
Oracle删除重复数据记录的更多相关文章
- oracle删除重复数据只保留一条
-- 如表role_user的数据 ROLEID USERID -- 删除相同记录只剩下一条记录 根据两个字段查询重复数据 (roleid,userid) ) 删除重复数据只保留一条 delete f ...
- oracle 删除重复数据
1.找出重复数据 select count(1),uuid from ts.test group by uuid having count(1)>1 order by 1 desc ;---找 ...
- Oracle 删除重复数据只留一条
查询及删除重复记录的SQL语句 1.查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 where Id in (select Id from 表 g ...
- Oracle删除重复数据并且只留其中一条数据
数据库操作中,经常会因为导数据造成数据重复,需要进行数据清理,去掉冗余的数据,只保留正确的数据 一:重复数据根据单个字段进行判断 1.首先,查询表中多余的数据,由关键字段(name)来查询. sele ...
- Oracle 删除重复的记录,只保留一条
查询及删除重复记录的SQL语句 1.查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 where Id in (select Id from 表 g ...
- Oracle 删除重复数据只留一条(转)
转自:http://www.cnblogs.com/252e/archive/2012/09/13/2682817.html 查询及删除重复记录的SQL语句 1.查找表中多余的重复记录,重复记录是 ...
- Oracle删除重复数据的几种常用方法
1.有可区分的主键,其他数据相同 select * from 表名 dl where dl.id not in (select min(d.id) from 表名 d group by 重复列) 2 ...
- oracle删除重复数据,只保留一条
比如,某个表要按照id和name重复,就算重复数据 delete from 表名 where rowid not in (select min(rowid) from 表名 group by id,n ...
- oracle删除重复数据
select id from LOG where created >= to_date('2015/2/7 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and cre ...
随机推荐
- JSON数据和Java对象的相互转换
JSON解析器: 常见的解析器: Jsonlib, Gson, fastjson, jackson 其中应用最广泛的是jackson,阿里的fastjson虽然比jackson快一点,但存在的问题比较 ...
- yaml基本用法
简介 YAML 是 "YAML Ain't Markup Language"(YAML 不是一种标记语言)的递归缩写.在开发的这种语言时,YAML 的意思其实是:"Yet ...
- docker添加sudo权限
sudo groupadd docker # 添加group sudo gpasswd -a think docker # 添加用户到组 sudo service docker restart n ...
- sqlalchemy delete object
In SQL Alchemy you are deleting Objects that you get with a query from the database. This you can do ...
- Python 官方研讨会:彻底移除 GIL 真的可行么?
作者:Łukasz Langa 译者:豌豆花下猫,来源:Python猫 原文:https://lukasz.langa.pl/5d044f91-49c1-4170-aed1-62b6763e6ad0 ...
- Linux基础三:用户和组
三.用户和组 1.概念 (1).用户概念: 用户是用来运行某一些进程.拥有某一些文件或目录. 在Linux里面,用户分成三大类:root用户.系统用户.普通用户. 用户是用UID来唯一标识身份的,且r ...
- [atARC127F]±AB
(为了方便,以下除$V$外都改为小写字母) 结论1:若$a+b\le m+1$,则答案为$m+1$(即任意$x$都可以被得到) 任取$y\in [0,m]$,由$\gcd(a,b)=1$存在$y-V= ...
- [atAGC051D]C4
考虑将两次移动作为一个整体,两次移动的效果分为:$s-u$.$u-s$和原地不动 对于从$s$回到$s$路径,必然有前两种效果使用次数相同,假设都为$i$(枚举),那么原地不动的次数$j=\frac{ ...
- idea添加插件后重启后报错:cannot load project xxxx 解决方案
问题原因:新安装的idea下载插件后重启报错 找到windows上c:\Users\.IntelliJIdea<版本>\config\plugins\这个目录,然后 将对应插件删除
- UOJ 266 - 【清华集训2016】Alice和Bob又在玩游戏(SG 定理+01-trie)
题面传送门 神仙题. 首先注意到此题的游戏是一个 ICG,故考虑使用 SG 定理解决这个题,显然我们只需对每个连通块计算一遍其 SG 值异或起来检验是否非零即可.注意到我们每删除一个点到根节点的路径后 ...