`
念QC
  • 浏览: 9516 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

关于oracle 去掉重复数据问题

 
阅读更多

关于Oracle去除重复数据:

1):Oracle的row_number() over函数消除重复的记录

例子:1.select d.id,d.outer_code from dict_depts_source d order by outer_code(查看重复数据)

2.select d.id,d.outer_code,row_number() over(partition by outer_code order by outer_code) row_flag from dict_depts_source d(标识重复数据)

3.delete from dict_depts_source where id in(
select id from(select d.id,d.outer_code,row_number() over(partition by outer_code order by outer_code) row_flag from dict_depts_source d)t
where t.row_flag > 1)(删除重复数据)

3.select d.id,d.outer_code,row_number() over(partition by outer_code order by outer_code) row_flag from dict_depts_source d(检查删除效果)

2)

distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用 它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。

下面先来看看例子:

table表

字段1 字段2
id name
1 a
2 b
3 c
4 c
5 b

库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。

比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。

select distinct name from table
得到的结果是:

 

----------

name
a
b
c

好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧:

select distinct name, id from table

结果会是:

----------

id name
1 a
2 b
3 c
4 c
5 b

distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与name都相同的才会被排除。。。。。。。

我们再改改查询语句:

select id, distinct name from table

很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能,照样报错。

------------------------------------------------------------------------------------------------------------

下面方法可行:

select *, count(distinct name) from table group by name

结果:

id name count(distinct name)
1 a 1
2 b 1
3 c 1

最后一项是多余的,不用管就行了,目的达到。。。。。

group by 必须放在 order by 和 limit之前,不然会报错

 

转载自:http://hi.baidu.com/jlh_jianglihua/item/e1e3276abe1b4833ad3e83a5

分享到:
评论

相关推荐

    ORACLE去除重复数据方法

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

    oracle中如何删除重复数据

    以下将详细解释如何在Oracle中处理这两种类型的重复数据问题:部分字段重复和完全重复记录。 一、部分字段重复数据的删除 1. 查询重复数据: 使用`GROUP BY`和`HAVING`子句可以找出具有相同值的字段组合。例如,...

    解决Oracle删除重复数据只留一条的方法详解

    查询及删除重复记录的SQL语句1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断select * from 表 where Id in (select Id from 表 group by Id having count(Id) > 1)2、删除表中多余的重复记录,...

    oracle去重复

    ### Oracle去除重复数据详解 在Oracle数据库中,去除重复数据是一项常见的需求,特别是在处理大量数据时,为了确保数据准确性和一致性,去除重复记录至关重要。本文将详细介绍如何利用`ROW_NUMBER()`函数来有效地...

    oracle删除重复数据的sql语句

    根据给定文件中的标题、描述、标签以及...综上所述,通过ROWID、GROUP BY和DISTINCT等多种方式,可以灵活有效地处理Oracle数据库中的重复数据问题。在实际应用中,可以根据具体需求选择合适的方法来优化数据库性能。

    oracle 删除去掉重复项

    本文将深入探讨Oracle中删除和处理重复数据的方法,特别是基于提供的内容,我们将详细解析如何通过SQL语句来实现这一目标。 ### 1. 基于特定字段删除重复记录 #### 方法一:基于`peopleId`删除重复项 当数据库表中...

    Oracle删除重复的数据,Oracle数据去重复

    - `DISTINCT`关键字可以用于查询结果集中去除重复行,但不适用于实际删除重复数据。 - 可以创建唯一索引,阻止新的重复数据插入。 - 使用`MERGE`语句结合`WITH`子句也可以处理重复数据问题,提供更灵活的策略。 ...

    plsql删除重复记录

    ### PL/SQL删除Oracle数据库中的重复记录方法详解 ...通过上述步骤,你可以有效地识别并删除Oracle数据库中的重复记录,从而保持数据的一致性和准确性。这种方法不仅适用于简单的场景,对于复杂的业务环境也同样适用。

    Oracle中查找和删除重复记录方法

    删除重复记录的方法原理:在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是在Oracle中的哪一个数据文件、块、行上。在重复的记录中,可能所有列的内容都相同,但rowid不会...

    一种基于重复数据删除的Oracle数据库备份系统.pdf

    在灾难恢复中心,建立一个哈希表来记录已存储数据块的指纹,通过对比指纹值来检测和去除重复数据。这种技术可以显著减少备份数据的体积,降低存储需求,同时减少了备份数据在网络中的传输量。 【安全机制】为了保障...

    Oracle中用Rowid查找和删除表中的重复记录

    使用`DISTINCT`关键字可以返回去除重复后的记录,但这种方法只能用于查看数据,无法直接获取重复记录。 3. **Rowid与Subquery** ```sql SELECT * FROM cz a WHERE ROWID = (SELECT MAX(ROWID) FROM cz WHERE c1 ...

    Oracle_10g数据仓库实践 (最全面).pdf

    - **数据清洗**:去除重复、错误或不完整的数据。 - **数据验证**:确保数据符合预定义的标准和格式。 #### 1.10 OLAP 技术 - **多维分析**:支持复杂的分析需求,如汇总、切片、切块等。 - **在线分析处理**:...

    Oracle数据挖掘

    1. 数据预处理:数据挖掘的第一步通常是数据清洗和预处理,包括去除重复值、处理缺失值、异常值检测和转换数据格式。Oracle提供了SQL和PL/SQL语言以及一系列内置函数来支持这些操作,确保挖掘的数据质量。 2. 特征...

    Oracle 数据库经典练习

    找出42部门的职位列表,可以使用`DISTINCT`关键字去除重复,SQL语句为:`SELECT DISTINCT title FROM s_emp WHERE dept_id = 42` 6. **非特定部门筛选** 要找出非'Sales'部门的员工,可以使用`NOT`和`IN`或简单...

    企业oracle数据分析岗位面试题

    通过上述解析可以看出,Oracle数据分析岗位面试题涵盖了数据库基础知识、Oracle特定语言和工具的应用、数据管理与优化等多个方面,不仅考察应聘者的理论知识掌握情况,还关注其解决实际问题的能力和经验。

    oracle学习及练习语句

    `oracle-merge.txt`文件则介绍了MERGE语句,它能够根据一个源表的数据更新或插入到目标表中,同时处理重复记录的问题。 5. Oracle SQL语句练习:`Oracle_sql语句练习.txt`和`oracle-sql练习2.txt`可能包含了各种SQL...

    oracle基础的文档 熟悉oracle的对象

    - **去除重复数据**:默认情况下,SQL会返回所有匹配的行,但DISTINCT关键字可以去除重复的值,如`SELECT DISTINCT stu_age FROM stu`。 - **表达式查询**:在SELECT语句中,可以使用算术运算符和逻辑运算符来构造...

    Oracle高级sql学习与练习

    UNION和UNION ALL用于联合多个结果集,不同之处在于UNION ALL会将所有结果包括重复项,而UNION则会自动去除重复的结果。INTERSECT用来返回两个查询结果集的交集,而MINUS则返回第一个查询结果集相对于第二个查询结果...

Global site tag (gtag.js) - Google Analytics