搜索
首页数据库Oracleoracle如何去除重复数据

oracle去除重复数据的方法:1、针对指定列,查出所有重复的行,并删除,方法为count having;2、删除所有重复的行,代码为【delete from nayi224_180824 t where t.rowid in】。

oracle如何去除重复数据

本文操作环境:Windows7系统,oracle9i版本,Dell G3电脑。

推荐(免费):oracle数据库    

oracle去除重复数据的方法:

创建测试数据

create table nayi224_180824(col_1 varchar2(10), col_2 varchar2(10), col_3 varchar2(10));
insert into nayi224_180824select 1, 2, 3 from dual union allselect 1, 2, 3 from dual union allselect 5, 2, 3 from dual union allselect 10, 20, 30 from dual ;commit;select*from nayi224_180824;
COL_1 COL_2 COL_3
1 2 3
1 2 3
5 2 3
10 20 30

针对指定列,查出去重后的结果集

distinct

select distinct t1.* from nayi224_180824 t1;
COL_1 COL_2 COL_3
10 20 30
1 2 3
5 2 3

方法局限性很大,因为它只能对全部查询的列做去重。如果我想对col_2,col3去重,那我的结果集中就只能有col_2,col_3列,而不能有col_1列。

select distinct t1.col_2, col_3 from nayi224_180824 t1
COL_2 COL_3
2 3
20 30

不过它也是最简单易懂的写法。

row_number()

select *  from (select t1.*,
               row_number() over(partition by t1.col_2, t1.col_3 order by 1) rn          
               from nayi224_180824 t1) t1 where t1.rn = 1;
COL_1 COL_2 COL_3 RN
1 2 3 1
10 20 30 1

写法上要麻烦不少,但是有更大的灵活性。

针对指定列,查出所有重复的行

count having

select *  from nayi224_180824 t 
where (t.col_2, t.col_3) in (select t1.col_2, t1.col_3                                
from nayi224_180824 t1                               
group by t1.col_2, t1.col_3                              
having count(1) > 1)
COL_1 COL_2 COL_3
1 2 3
1 2 3
5 2 3

要查两次表,效率会比较低。不推荐。

count over

select *  from (select t1.*,               
count(1) over(partition by t1.col_2, t1.col_3) rn          
from nayi224_180824 t1) t1 where t1.rn > 1;
COL_1 COL_2 COL_3 RN
1 2 3 3
1 2 3 3
5 2 3 3

只需要查一次表,推荐。

删除所有重复的行

delete from nayi224_180824 t where t.rowid in (                   
select rid                     
from (select t1.rowid rid,                                   
count(1) over(partition by t1.col_2, t1.col_3) rn                              
from nayi224_180824 t1) t1                    
where t1.rn > 1);

就是上面的语句稍作修改。

删除重复数据并保留一条

分析函数法

delete from nayi224_180824 t where t.rowid in (select rid                     
from (select t1.rowid rid,
    
    row_number() over(partition by t1.col_2, t1.col_3 order by 1) rn                             
    from nayi224_180824 t1) t1                    
    where t1.rn > 1);

拥有分析函数一贯的灵活性高的特点。可以为所欲为的分组,并通过改变orderby从句来达到像”保留最大id“这样的要求。

group by

delete from nayi224_180824 t where t.rowid not in
       (select max(rowid) from nayi224_180824 t1 group by t1.col_2, t1.col_3);

牺牲了一部分灵活性,换来了更高的效率。

以上是oracle如何去除重复数据的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Oracle软件的角色:简化业务流程Oracle软件的角色:简化业务流程May 10, 2025 am 12:19 AM

Oracle软件通过数据库管理、ERP、CRM和数据分析功能简化业务流程。1)OracleERPCloud自动化财务、人力资源等流程;2)OracleCXCloud管理客户互动,提供个性化服务;3)OracleAnalyticsCloud支持数据分析和决策。

Oracle的软件套件:解释的产品和服务Oracle的软件套件:解释的产品和服务May 09, 2025 am 12:12 AM

Oracle的软件套件包括数据库管理、ERP、CRM等,帮助企业优化运营、提高效率、降低成本。1.OracleDatabase管理数据,2.OracleERPCloud处理财务、人力资源和供应链,3.使用OracleSCMCloud优化供应链管理,4.通过API和集成工具确保数据流动和一致性。

MySQL与Oracle:许可,功能和福利MySQL与Oracle:许可,功能和福利May 08, 2025 am 12:05 AM

MySQL和Oracle的主要区别在于许可证、功能和优势。1.许可证:MySQL提供GPL许可证,免费使用,Oracle采用专有许可证,价格昂贵。2.功能:MySQL功能简单,适合Web应用和中小型企业,Oracle功能强大,适合大规模数据和复杂业务。3.优势:MySQL开源免费,适合初创公司,Oracle性能可靠,适合大型企业。

MySQL与Oracle:选择右数据库系统MySQL与Oracle:选择右数据库系统May 07, 2025 am 12:09 AM

MySQL和Oracle在性能、成本和使用场景上有显着差异。 1)性能:Oracle在复杂查询和高并发环境下表现更好。 2)成本:MySQL开源,成本低,适合中小型项目;Oracle商业化,成本高,适用于大型企业。 3)使用场景:MySQL适用于Web应用和中小型企业,Oracle适合复杂的企业级应用。选择时需根据具体需求权衡。

Oracle软件:最大化效率和性能Oracle软件:最大化效率和性能May 06, 2025 am 12:07 AM

Oracle软件可以通过多种方法提升性能。1)优化SQL查询,减少数据传输量;2)适当管理索引,平衡查询速度和维护成本;3)合理配置内存,优化SGA和PGA;4)减少I/O操作,使用合适的存储设备。

甲骨文:企业软件和云计算甲骨文:企业软件和云计算May 05, 2025 am 12:01 AM

Oracle在企业软件和云计算领域如此重要是因为其全面的解决方案和强大的技术支持。1)Oracle提供从数据库管理到ERP的广泛产品线,2)其云计算服务如OracleCloudPlatform和Infrastructure帮助企业实现数字化转型,3)Oracle数据库的稳定性和性能以及云服务的无缝集成提升了企业效率。

MySQL与Oracle:数据库系统的比较分析MySQL与Oracle:数据库系统的比较分析May 04, 2025 am 12:13 AM

MySQL和Oracle各有优劣,选择时需综合考虑:1.MySQL适合轻量级、易用需求,适用于Web应用和中小型企业;2.Oracle适合功能强大、可靠性高需求,适用于大型企业和复杂业务系统。

MySQL与Oracle:了解许可和成本MySQL与Oracle:了解许可和成本May 03, 2025 am 12:19 AM

MySQL采用GPL和商业许可,适合小型和开源项目;Oracle采用商业许可,适合需要高性能的企业。MySQL的GPL许可免费,商业许可需付费;Oracle许可费用按处理器或用户计算,成本较高。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器