`
xiangkun
  • 浏览: 102021 次
  • 性别: Icon_minigender_1
  • 来自: 马尔代夫
社区版块
存档分类
最新评论

解决sql 过滤重复数据记录的方法(Oracle)

阅读更多
分别创建了两个临时表,并按不同的字段作查询示例:
create table table1 (id int, ip varchar(15), city char(20));

insert into table1  values(1, '127.0.0.1', '深圳') ;
insert into table1  values(2, '127.0.0.2', '广州') ;
insert into table1  values(3, '127.0.0.2', '广州') ;
insert into table1  values(4, '127.0.0.2', '广州') ;
insert into table1  values(5, '127.0.0.2', '北京') ;
insert into table1  values(6, '127.0.0.4', '上海') ;
insert into table1  values(7, '127.0.0.4', '上海') ;
insert into table1  values(8, '127.0.0.4', '上海') ;
insert into table1  values(9, '127.0.0.7', '未知');

-- 按字段IP查询 
select * from table1 where id in 
-- 检索重复ip的纪录 
(select min(id) from table1 where ip in 
-- 求重复ip的其中一个id 
(select ip from table1 group by ip having count(1) >= 1) 
-- 取出重复的
ip group by ip ) ;


返回结果:
1	1	127.0.0.1          深圳                
2	2	127.0.0.2          广州                
3	6	127.0.0.4	         上海                
4	9	127.0.0.7	         未知   
           

create table table2 (id int, ip varchar(15), city char(20));

insert into table2 values( 1, '127.0.0.1', '深圳') ;
insert into table2 values( 2, '127.0.0.2', '广州') ;
insert into table2 values( 3, '127.0.0.2', '广州') ;
insert into table2 values( 4, '127.0.0.3', '北京') ;
insert into table2 values( 5, '127.0.0.3', '北京') ;
insert into table2 values( 6, '127.0.0.4', '上海') ;
insert into table2 values( 7, '127.0.0.4', '上海') ;
insert into table2 values( 8, '127.0.0.4', '上海') ;
insert into table2 values( 9, '127.0.0.7', '未知');



-- 按字段city查询 
select * from table1 where id in 
-- 检索重复city的纪录 
(select min(id) from table1 where city in 
-- 求重复city的其中一个id 
(select city from table1 group by city having count(1) >= 1) 
-- 取出重复的city 
group by city );


返回结果:
1	1	127.0.0.1         深圳                
2	2	127.0.0.2	         广州                
3	4	127.0.0.3	         北京                
4	6	127.0.0.4	         上海                
5	9	127.0.0.7         未知    
           

分享到:
评论

相关推荐

    ORACLE去除重复数据方法

    ### ORACLE去除重复数据方法 在数据库管理与维护过程中,数据重复问题是非常常见的现象,尤其在大型企业级应用中更是如此。重复数据不仅占用存储空间,还可能导致数据分析结果出现偏差,影响业务决策的准确性。因此...

    Oracle查询重复数据与删除重复记录方法

    ### Oracle查询重复数据与删除重复记录方法 #### 一、查询重复数据 ##### 1. 使用ROWID方法 ROWID是Oracle中一个特殊的数据类型,它代表了表中每一条记录在物理存储上的唯一地址。利用ROWID可以非常高效地查询和...

    一个过滤重复数据的 SQL 语句

    过滤重复数据的 SQL 语句 在关系数据库管理系统中,经常会遇到重复数据的问题,而过滤重复数据是数据处理和分析的重要步骤。本文将介绍如何使用 SQL 语句来过滤重复数据,并讨论相关的知识点。 一、数据重复的原因...

    Oracle重复数据清理

    第二种方法是创建一个新表来存储没有重复数据的记录,这通过使用CREATE TABLE AS SELECT语句完成,该语句基于一个查询,该查询使用ROW_NUMBER()来过滤掉重复项。 3. 数据备份的重要性:在执行删除操作之前,备份...

    oracle SQL优化技巧

    最高效的删除重复记录方法(因为使用了 ROWID)。例子:DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM EMP X WHERE X.EMP_NO = E.EMP_NO); 9. 用 TRUNCATE 替代 DELETE 当删除表中的记录时,在...

    ORACLE重复记录查询.docxORACLE

    在Oracle数据库管理中,处理重复记录是一个常见的任务,特别是在数据清洗和数据整合的过程中。本文将详细探讨如何在Oracle中查询和删除重复记录,主要聚焦于单个字段和多个字段的情况。 1. **单个字段重复记录查询*...

    介绍OracleSQL和PLSQL

    1. 数据查询:Oracle SQL提供丰富的数据查询功能,包括SELECT语句,可以用来检索、聚合和过滤数据。通过JOIN、UNION、INTERSECT和EXCEPT操作,你可以组合多个表的数据并进行复杂的分析。 2. 数据插入与更新:INSERT...

    ORACLE SQL官方教程

    本教程基于ORACLE的官方SQL教材,旨在提供全面且深入的SQL学习资源,帮助初学者和进阶用户掌握这一强大的数据操作工具。 1. **SQL基础** SQL(Structured Query Language)是一种用于管理和处理关系数据库的标准...

    ORACLE 优化sql语句提高oracle执行效率 .doc

    8. 删除重复记录:最高效的删除重复记录方法是使用 ROWID。 9. 用 TRUNCATE 替代 DELETE:当删除表中的记录时,在通常情况下,回滚段(rollback segments)用来存放可以被恢复的信息。如果你没有 COMMIT 事务,...

    Oracle SQL Reference命令参考文档

    1. **SQL Plus基础**:SQL Plus是Oracle数据库系统的一个交互式命令行工具,用于执行SQL查询、DML(数据操纵语言)操作、DDL(数据定义语言)命令和PL/SQL块。通过SQL Plus,用户可以直接与数据库进行交互,无需图形...

    oracle SQL语法大全

    最后,Oracle SQL还支持存储过程和函数,它们是预编译的SQL和PL/SQL代码块,可以重复使用并执行复杂的业务逻辑。DECLARE, BEGIN, END关键字用于定义PL/SQL块,PROCEDURE和FUNCTION分别用于创建过程和函数。 总的来...

    oracle 查询出每组中最大的三个记录和查询重复记录

    在Oracle数据库中,查询数据是日常操作的一部分,而有时候我们需要获取特定的数据集,例如每组中的最大几个记录或者找出重复的记录。这篇博客主要探讨如何实现这两个目标。 首先,我们来讨论如何查询每组中最大的三...

    Oracle提高SQL查询效率(SQL优化).doc

    Oracle 中提高 SQL 查询效率的技巧和策略,包括选择最有效率的表名顺序、WHERE 子句中的连接顺序、SELECT 子句中避免使用‘*’、减少访问数据库的次数、使用 DECODE 函数、整合简单的数据库访问、删除重复记录、用 ...

    Oracle SQL必备参考.pdf 高清下载

    尽管给定的部分内容主要涉及的是一个重复的Java学习社区链接,并未直接提供关于Oracle SQL的具体信息,但从标题和描述“Oracle SQL必备参考.pdf 高清下载”中,我们可以推断出文档可能涵盖的关键知识点与Oracle SQL...

    Oracle Sql 性能优化

    ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. 3、SELECT中避免使用 ‘ * ‘: ORACLE在解析的过程中, ...

    oracle数据库测试sql文件.zip

    1. **基础查询**:如何使用SELECT语句来查询数据,包括WHERE子句用于过滤结果,GROUP BY和HAVING子句用于数据分组和条件过滤,以及JOIN操作连接多个表。 2. **聚合函数**:如COUNT、SUM、AVG、MAX和MIN,它们用于...

    Oracle数据库SQL优化总结

    2. **WHERE子句中的连接顺序**:从下往上解析WHERE子句,将能够过滤最多记录的条件放在最后,这样可以减少处理的数据量。 3. **避免在SELECT中使用通配符'*'**:使用具体的列名代替'*',以减少解析时间和内存消耗。...

    oracle的SQL语句的一些经验总结

    以上只是Oracle SQL使用中的一部分关键知识点,实际经验总结可能还包含更多关于性能调优、错误处理、数据转换、安全策略等方面的内容。在实践中,理解并熟练运用这些概念对于有效管理和利用Oracle数据库至关重要。

    Oracle 常用SQL技巧经典收藏

    6. **使用WHERE子句替换HAVING子句**:WHERE子句在数据检索前就进行过滤,而HAVING则在聚合操作后过滤,所以对于大数据量,使用WHERE通常更高效。例如,筛选特定区域的平均日志大小,应该在GROUP BY之前使用WHERE。 ...

    Oracle的sql语句练习题及参考答案

    Oracle SQL是用于管理和操作Oracle数据库的强大工具,它允许用户查询、更新、插入和删除数据,以及执行复杂的数据库操作。在“Oracle的SQL语句练习题及参考答案”中,我们很可能会遇到各种与`SELECT`语句相关的练习...

Global site tag (gtag.js) - Google Analytics