oracle去重:综合了别人的记录

oracle去重:综合了别人的记录,大致有以下两种看起来顺眼。

1.delete from t
where   rowid   not   in   (select   min(rowid)   from   t   group   by   去重字段);

举个栗子:

--去重
delete from PTW_I_METHOD_DEFINE_TEMP
where   id   not   in   (select   min(id)   from   PTW_I_METHOD_DEFINE_TEMP   group   by   no);

2.(注意:distinct是记录完全一致的重复。而上面是以某一列的值是否重复来决定)
insert into 临时表 select distinct mobile from 原表;
drop table 原表;
rename 临时表名 to 原表名;

来源: <http://blog.163.com/k_doll/blog/static/7845013020091361626770/>

  

时间: 2024-08-27 14:44:21

oracle去重:综合了别人的记录的相关文章

Oracle中随机抽取N条记录

一.Oracle取随机数据  1.Oracle访问数据的基本方法:  1).全表扫描(Full table Scan):执行全表扫描,Oracle读表中的所有记录,考查每一行是否满足WHERE条件.Oracle顺序的读分配给该表的每一个数据块,且每个数据块Oracle只读一次.这样全表扫描能够受益于多块读. 2).采样表扫描(sample table scan):扫描返回表中随机采样数据,这种访问方式需要在FROM语句中包含SAMPLE选项或者SAMPLE BLOCK选项.     注:从Ora

【转】oracle 中随机取一条记录的两种方法

oracle 中随机取一条记录的两种方法 V_COUNT INT:=0; V_NUM INT :=0; 1:TBL_MYTABLE 表中要有一个值连续且唯一的列FID BEGIN SELECT COUNT(*) INTO V_COUNT FROM  TBL_MYTABLE; SELECT TRUNC(DBMS_RADOM.VALUE(1,V_COUNT+1)) INTO V_NUM FROM DUAL; SELECT * FROM TBL_MYTABLE T WHERE T.FID=V_NUM;

oracle中查找和删除重复记录的几种方法总结

平时工作中可能会遇到当试图对库表中的某一列或几列创建唯一索引时,系统提示 ORA-01452 :不能创建唯一索引,发现重复记录. 下面总结一下几种查找和删除重复记录的方法(以表CZ为例): 表CZ的结构如下: 1 SQL> desc cz 2 Name Null? Type 3 ------------------------------------------------------------------- 4 C1 NUMBER(10) 5 C10 NUMBER(5) 6 C20 VARC

oracle rac 扩展磁盘采坑记录

oracle rac 磁盘扩展采坑记录: 系统环境:VMware esxi oracle rac 11.2.0.4 昨天扩展了asm的磁盘组,FRA磁盘组和DATA磁盘组,我添加了一块硬盘320g,200g扩展到了DATA组,120g扩展到了FRA组.因为oracle使用的是raw裸设备,扩展第一个磁盘的时候,正常进行,不用关机. 坑1:但是扩展FRA组的时候,需要关机才能找得到第二个设备.重启之后扩展正常,建议扩展磁盘一次扩展到一个组. 坑二:今天我看见系统盘空间不够了,就扩展了一下系统盘空间

Oracle 去重

Oracle 删除重复数据只留一条 查询及删除重复记录的SQL语句 -- 1.查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 where Id in (select Id from 表 group byId having count(Id) > 1) -- 例: select * from orders_tmp2 where cust_nbr in (select cust_nbr from orders_tmp2 group by cust_nbr

oracle去重等基础问题

--去重查询方法一:根据id select * from sxe where id in(select min(id) from sxe group by username) order by id asc;--去重查询方法二:根据rownumselect * from (select s.*,rownum rn from sxe s ) x where x.rn in (select min(rownum) from sxe group by username) order by id asc

oracle笔记--查询10条之后记录的数据

本文版权归 远方的风lyh和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 由于之前一直在用mysql 对于oracle 的一些语法不太了解,自己有一次去面试让写一个oracle 的分页傻乎乎的用limit 来分页(囧)! oracle 的分页使用的是关键字 rownum: 昨天在开发过程中 自己本来想写查询一条语句,查询第10条之后的搜有数据, 自己写 select  a from  A rownum>10 竟然查出不出(记录大于10条) 最后在网上发现自己这样写是错误,语

查询别人通话记录与短信内容

免责声明:咨 询 Q Q: 2540400410 主要有这方面的一切问题你就直接加这个QQ:2540400410就帮助你了.成功案例等信息在此强烈推荐,他们专业查微信聊天记录,QQ聊天记录,恢复删除的微信聊天记录,查别人的qq聊天记录等.服务QQ: 2540400410.我找过他们,他们有信誉.也许可以帮你,我查我男朋友的聊天记录就是找他们的.~他们的QQ: 2540400410-很专业,信誉很好!希望可以帮助你们.加QQ:2540400410 专业为你服务:手机通话记录查询,手机通话详单查询,

Oracle通过主键id删除记录很慢

问题描述: Oracle通过主键id删除2000条记录很慢,需要花费十二分钟. 解决过程: 1.首先查看SQL的执行计划,执行计划正常,cost只有4,用到了主键索引. 2.查看等待事件, select * from v$session_wait where sid = 507 显示的event是db file sequential read,也没有异常. 3.查看统计信息是否正常 select * from user_tables where table_name = ''; 经检测,统计信息