- 浏览: 1728967 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (288)
- java (59)
- javaweb (15)
- eclipse (16)
- uml (1)
- java ee (7)
- windows (5)
- html (4)
- 数据结构和算法 (6)
- oracle (84)
- struts (3)
- ajax (3)
- hibernate (3)
- spring (12)
- ExtJS (14)
- 随笔 (2)
- JavaScript (9)
- PL SQL (12)
- tomcat (2)
- Plugins (5)
- office (2)
- webService (4)
- others (9)
- htc (1)
- 自定义标签的行为 (1)
- powerDesigner (3)
- webSphere (5)
- linux (6)
- dom4j (1)
- xml (5)
- json (2)
- bat (4)
- spring MVC (5)
- MySQL (12)
- junit (4)
- maven (10)
- jquery (1)
- mongoDB (16)
- git (0)
- mybatis (5)
- svn (3)
- activemq (3)
- quartz_job (1)
最新评论
-
白天看黑夜:
PDMReader实现pdm建模快速导出word,html文件 ...
利用powerDesigner逆向导出oracle表为PDM并把PDM转为CDM -
sanshao:
roompig 写道beancopier只实现了浅拷贝的功能, ...
使用Cglib的BeanCopier实现Bean的拷贝 -
贝塔ZQ:
Java实现导入导出excel文件,利用poi实现感觉代码比较 ...
利用java导入导出excel到oracle数据库 -
suxj16:
部署之后启动有问题org.springframework.be ...
spring mvc文件上传实现进度条(转) -
suxj16:
谢谢分享。部署之后启动有问题org.springframewo ...
spring mvc文件上传实现进度条(转)
1.操作单个字段:
a.查询出表中单个字段的重复记录.
SELECT * FROM aj_xyrxx t1 WHERE t1.ajbh IN (SELECT t2.ajbh FROM aj_xyrxx t2 GROUP BY t2.ajbh HAVING COUNT(t2.ajbh) > 1) ;
b.删除单个字段重复的记录,只保留一个(此处可以使用oracle自带的伪列rowid或rownum).
DELETE FROM aj_xyrxx t1 WHERE t1.ajbh IN (SELECT t2.ajbh FROM aj_xyrxx t2 GROUP BY t2.ajbh HAVING COUNT(t2.ajbh) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM aj_xyrxx t3 GROUP BY t3.ajbh HAVING COUNT(t3.ajbh) > 1) ;
2.操作多个字段
a.查询
SELECT * FROM aj_xyrxx t1 WHERE (t1.ajbh,t1.rybh) IN (SELECT t2.ajbh,t2.rybh FROM aj_xyrxx t2 GROUP BY t2.ajbh,t2.rybh HAVING COUNT(*) > 1) ;
b.删除
DELETE FROM aj_xyrxx t1 WHERE (t1.ajbh,t1.rybh) IN (SELECT t2.ajbh,t2.rybh FROM aj_xyrxx t2 GROUP BY t2.ajbh,t2.rybh HAVING COUNT(*) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM aj_xyrxx t3 GROUP BY t3.ajbh,t3.rybh HAVING COUNT(*) > 1) ;
评论
4 楼
ysj5125094
2011-07-13
bing_zz 写道
b.删除单个字段重复的记录,只保留一个(此处可以使用oracle自带的伪列rowid或rownum).
这句话有点迷惑人,按博客的写法,把rowid换成rownum是把所有的重复列都删除的,楼主应该把使用rownum的方法也写出来,或者提个醒。
这句话有点迷惑人,按博客的写法,把rowid换成rownum是把所有的重复列都删除的,楼主应该把使用rownum的方法也写出来,或者提个醒。
哦,这个地方我要解释一下了,如果只想用SQL语句删除重复记录的话只能用rowid伪列.如果想用rownum删的话,那么就必须得使用oracle的存储过程了.
例如(程序块):
DECLARE CURSOR wfxyr_cursor IS SELECT t.ajbh,t.rybh FROM aj_xyrxx t WHERE t.rybh IS NOT NULL ; BEGIN FOR wfxyr_record IN wfxyr_cursor LOOP BEGIN --注意rkbm必须存在. SELECT wfxyrxh INTO v_wfxyrxh FROM za_zfba_jcxx_rk_saxyrxx WHERE rkbm = v_rybh ; --继续其他业务处理... EXCEPTION When dup_val_on_index THEN dbms_output.put_line('主键重复'); ROLLBACK ; WHEN OTHERS THEN --如果在上面的查询中出现异常,说明查询出多条重复记录,可以在此处把重复记录给删除掉只保留第一条. DELETE FROM za_zfba_jcxx_rk_saxyrxx WHERE rkbm = v_rybh AND rownum <> 1 ; COMMIT ; END ; END LOOP ; END ;
上面程序片段是我刚写的,没有经过测试,但是大概是那么个意思,看看我说的你能理解不.
3 楼
bing_zz
2011-07-12
b.删除单个字段重复的记录,只保留一个(此处可以使用oracle自带的伪列rowid或rownum).
这句话有点迷惑人,按博客的写法,把rowid换成rownum是把所有的重复列都删除的,楼主应该把使用rownum的方法也写出来,或者提个醒。
这句话有点迷惑人,按博客的写法,把rowid换成rownum是把所有的重复列都删除的,楼主应该把使用rownum的方法也写出来,或者提个醒。
2 楼
ysj5125094
2011-07-07
yulongxiang 写道
可以同时操纵多个字段,我还试过呢,学习了。
呵呵,我也是今天用到,所以才学习到这儿,做个笔记下来,方便以后查阅.
1 楼
yulongxiang
2011-07-07
可以同时操纵多个字段,我还试过呢,学习了。
发表评论
-
日期差的天时分秒表示SQL(转)
2015-01-09 14:47 2419文章出自:http://blog.csdn.net/ ... -
MySQL分组后排序的问题(转)
2014-05-21 11:31 1718文章出自:http://zhidao.baidu.co ... -
在oracle的decode函数中实现like相同操作
2014-03-28 14:37 10897在oracle的decode函数中不能使用like操作 ... -
45个非常有用的Oracle查询语句分享
2014-03-17 13:41 961文章出自:http://tech.it168.com ... -
能使 Oracle 索引失效的七大限制条件
2014-03-17 13:11 6219文章出自:http://tech.it168.com/ ... -
oracle存储过程异常处理及时间戳变量类型
2014-03-15 18:02 3110下面通过一个简单 ... -
对只转发结果集的无效操作: isLast
2014-03-13 14:19 2720在遍历结果集的时候,用rs.isLast()来判断是否到达 ... -
oracle连接DBLINK报错:ORA-12154: TNS:could not resolve service name的解决办法(转)
2014-01-13 15:56 3150文章出自:http://blog.csdn.net/x ... -
查看oracle enterprise manager端口的途径(转)
2014-01-13 12:04 1327文章出自:http://www.myexception ... -
利用java导入导出excel到oracle数据库
2013-12-05 14:46 8638用到的JAR包如下(可以直接到POI官网上下载也可以 ... -
WebSphere+Oracle乱码问题解决
2013-11-26 15:01 1573环境介绍: Web容器(中间件):W ... -
v$session 的权限(转)
2013-11-15 13:32 1828文章出自:http://blog.csdn.net/x ... -
Oracle中查看所有表和字段(转)
2013-08-29 11:48 1251文章出自以下两个网站: Oracle中查看所有表和字 ... -
oracle杀掉正在运行的存储过程
2013-08-28 16:05 3260本篇文章主要介绍如何kill掉一个正在运行的存储过程, ... -
oracle中v$access视图介绍
2013-08-28 15:49 8473如果想了解如果杀掉一个正在运行的存储过程,请查询这篇 ... -
oracle 临时表介绍(整合)
2013-08-27 11:14 2475在工作中用临时表从A库到B库导入LOB(大)字段,用临 ... -
oracle 的连接操作(left jion,right jion, full jion)
2013-06-14 12:52 25351.创建测试表 -- Create table ... -
如何查看oracle的版本信息(转)
2013-05-07 08:30 1214文章出自: http://blog.sina.com. ... -
oracle触发器实践(增,改,删)
2013-04-27 14:02 1388实现对某个表的增改删的监控操作,并记录到另一个表中. ... -
Oracle如何正确删除archivelog文件(转)
2013-04-10 13:29 2951文章出自 : http://cac ...
相关推荐
2. **构建子查询**: 使用`GROUP BY`和`HAVING`条件筛选出重复记录的标识符。 3. **执行外层查询**: 结合子查询的结果,从主表中提取所有列的完整信息,限定于那些包含重复`peopleid`的记录。 ### 深入理解与优化 - ...
在 Oracle 中,我们可以使用 GROUP BY 语句来查找重复记录。假设我们要根据 FIELD_CODE 字段来判断重复记录,可以使用以下语句: ```sql select * from R_RESOURCE_DETAILS where FIELD_CODE in(select FIELD_CODE ...
### Oracle查询重复数据与删除重复记录方法 在Oracle数据库中,有时我们需要找出并处理重复的数据。这不仅可以提高数据质量,还能提升查询效率。本文将详细介绍几种常用的查询和删除Oracle数据库中重复记录的方法。...
例如,下面的语句可以查询出表中多余的重复记录,并删除重复记录中除了 rowid 最小的记录以外的所有记录: ```sql declare @max integer, @id integer declare cur_rows cursor local for select 主字段, count(*) ...
1. **单个字段重复记录查询** 当我们需要根据单个字段(如`peopleId`)查找重复记录时,可以使用以下SQL语句: ```sql select * from people where peopleId in (select peopleId from people group by ...
### Oracle查询重复数据与删除重复记录方法 #### 一、查询重复数据 ##### 1. 使用ROWID方法 ROWID是Oracle中一个特殊的数据类型,它代表了表中每一条记录在物理存储上的唯一地址。利用ROWID可以非常高效地查询和...
使用Oracle查询并删除重复记录的SQL语句 在实际应用中,删除重复记录是非常常见的操作,特别是在数据导入、数据整合和数据清洁等场景中。Oracle数据库提供了多种方式来查询和删除重复记录,本文将详细介绍这些方法...
### Oracle删除重复记录性能分析 #### 一、背景与需求 在数据库管理中,经常会遇到数据清理的需求,尤其是在Oracle数据库中处理重复记录时。本文旨在通过对比几种不同的方法来删除Oracle中的重复记录,并分析其...
在Oracle数据库中,查询数据是日常操作的一部分,而...总之,Oracle数据库提供了丰富的功能来处理复杂的数据查询,包括找出每组的最大记录和重复记录。理解并熟练运用这些技术,对于进行高效的数据分析和管理至关重要。
要删除Oracle数据库表中的重复记录,有几种方法可以采用: ##### 方法一:使用子查询与DELETE语句 这种方法适用于只需要删除重复记录中的某些行的情况。步骤如下: 1. **找出重复的记录**:首先,我们需要找到...
在Oracle数据库管理中,处理数据冗余是一项非常重要的工作,特别是在大数据量的环境中,重复记录不仅浪费存储空间,还可能导致数据分析结果出现偏差。本文将详细介绍如何在Oracle数据库中有效地删除表内的重复记录。...
查询及删除重复记录的SQL语句1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断select * from 表 where Id in (select Id from 表 group by Id having count(Id) > 1)2、删除表中多余的重复记录,...
1. **查询重复记录**: 当我们想找出基于单一字段(如 `Id`)的重复记录时,可以使用如下的 SQL 语句: ```sql select * from 表 where Id in (select Id from 表 group by Id having count(Id) > 1) ``` 这个...
本文介绍了两种在Oracle数据库中去除重复数据的方法:一是通过子查询实现,二是利用窗口函数`ROW_NUMBER()`。这两种方法各有优劣: - **子查询方法**适用于大多数Oracle版本,但可能不够直观,尤其是在处理复杂数据...
另一种方法是使用聚合函数MAX或MIN,结合子查询来删除重复记录。例如: ```sql delete from tbl a where rowid not in ( select max(b.rowid) from tbl b where a.col1 = b.col1 and a.col2 = b.col2 ); ``` 这会...
### Oracle数据库删除表中重复记录的方法 在Oracle数据库管理中,经常会遇到需要处理表中的重复数据的情况。重复数据不仅会占用不必要的存储空间,还可能导致数据统计错误或业务逻辑混乱等问题。因此,掌握如何有效...
此方法通过子查询找到每个重复记录组中的最大Rowid,从而获取到每组重复记录中的一个。 #### 删除重复记录 针对不同的场景,可以采取以下几种策略来删除重复记录: 1. **基于Group By和Min/Max Rowid** ```sql ...
删除重复记录的方法原理:在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是在Oracle中的哪一个数据文件、块、行上。在重复的记录中,可能所有列的内容都相同,但rowid不会...