专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

oracle怎么去重,oracle去重的5种方法

来源:小易整编  作者:小易  发布时间:2022-12-30 03:00
摘要:oracle怎么去重,oracle去重的5种方法一、Oracle数据库去重1、环境准备可以看到“ALLEN”和“SMITH”这两个人的数据重复了,现在要求表中name重复的数据只保留一行,其他的删除。CREATETABLEhwb(...

oracle怎么去重,oracle去重的5种方法

一、Oracle数据库去重

1、环境准备

可以看到“ALLEN”和“SMITH”这两个人的数据重复了,现在要求表中name重复的数据只保留一行,其他的删除。

CREATE TABLE hwb(    id int,    name varchar(10) );INSERT INTO hwb VALUES(1, 'TOM');INSERT INTO hwb VALUES(2, 'ALLEN');INSERT INTO hwb VALUES(3, 'ALLEN');INSERT INTO hwb VALUES(4, 'SMITH');INSERT INTO hwb VALUES(5, 'SMITH');INSERT INTO hwb VALUES(6, 'SMITH');commit;SELECT * FROM hwb;

oracle怎么去重,oracle去重的5种方法

2、实现方法一:通过分组后,拿最小的id重复删除

delete from hwb a where a.id  in         (select min(id) FROM hwb a group by name having count(name) > 1)

oracle怎么去重,oracle去重的5种方法

oracle怎么去重,oracle去重的5种方法

3、实现方法二:通过name相同,id不同的方式来判断

DELETE FROM hwb a WHERE EXISTS (SELECT 1          FROM hwb b         WHERE a.name = b.name           AND a.id > b.id);

oracle怎么去重,oracle去重的5种方法

4、实现方法三:用rowid代替id,替换删除

DELETE FROM hwb a WHERE EXISTS (SELECT 1          FROM hwb b         WHERE a.name = b.name           AND a.rowid > b.rowid);

oracle怎么去重,oracle去重的5种方法

5、实现方法四:通过分析函数根据name分组生成序号,然后删除序号大于1的数据。

语法格式:row_number() over(partition by 分组列 order by 排序列 desc)

在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where 、group by、 order by 的执行。

DELETE FROM hwb aWHERE ROWID IN (SELECT rid                   FROM (SELECT ROWID as rid,                                ROW_NUMBER() OVER(PARTITION BY name ORDER BY id) AS seq                           FROM hwb)                  WHERE seq > 1);

oracle怎么去重,oracle去重的5种方法


6、【推荐】实现方法五:根据rowid删除

DELETE FROM hwb a WHERE a.ROWID > (SELECT MIN(b.ROWID) FROM hwb b WHERE a.name = b.name);

oracle怎么去重,oracle去重的5种方法


本文地址:百科问答频道 https://www.neebe.cn/wenda/886511.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


百科问答
小编:小易整编
相关文章相关阅读
  • db2数据库详解,db2和oracle的区别

    db2数据库详解,db2和oracle的区别

    db2数据库详解,db2和oracle的区别概述DB2是IBM一种分布式数据库解决方案。说简单点:DB2就是IBM开发的一种大型关系型数据库平台。DB2不仅是一种移动计算基础设施,还是一个完整的环境,包含了构建、部署和支持强大的电子商务应用...

  • oracle存储过程是什么,oracle存储过程详解

    oracle存储过程是什么,oracle存储过程详解

    oracle存储过程是什么,oracle存储过程详解1、定义所谓存储过程(StoredProcedure),就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的存储过程...

  • oracle 存储过程的基本语法

    oracle 存储过程的基本语法

    oracle存储过程oracle存储过程的很多语法可能大多数朋友并不是很了解,下面就来简单介绍几个比较常用的。oracle存储过程的基本语法1.基本结构CREATEORREPLACEPROCEDURE存储过程名字(参...

  • Oracle系统(Oracle数据库详解)

    Oracle系统(Oracle数据库详解)

    Oracle系统(Oracle数据库详解)什么是ORACLE?ORACLE数据库系统是美国ORACLE公(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一...

  • listagg函数用法,详解oracle函数listagg

    listagg函数用法,详解oracle函数listagg

    listagg函数用法,详解oracle函数listagg在工作中经常会遇到这样的问题:当需要把某一些查询到的结果合并并插入到数据库中的某一行时,会变得很麻烦。在某些情况下,我们可能可以借助诸如java、C等编程语言帮我们解决这样的问题,但...

  • 怎么卸载oracle,完全卸载oracle方法(超详细)

    怎么卸载oracle,完全卸载oracle方法(超详细)

    怎么卸载oracle,完全卸载oracle方法(超详细)进入服务找到Oracle开头的服务将这些服务全部停止Step1.点击开始菜单找到Oracle,然后点击Oracle安装产品,再点击UniversalInstallerStep2.点击之...

  • oracle adg介绍,adg搭建指南

    oracle adg介绍,adg搭建指南

    oracleadg介绍,adg搭建指南作为oracle数据库提供的一种容灾方式,ADG在我们日常生产中还是比较常见的,如何更快更好的搭建一套ADG,也是一个DBA需要掌握的基本技能。下面是一次在实际搭建过程中整理的操作步骤。可以供大家参考。...

  • oracle索引创建,oracle索引详解

    oracle索引创建,oracle索引详解

    oracle索引创建,oracle索引详解一、管理索引-原理介绍索引是用于加速数据存取的数据对象。合理的使用索引可以大大降低i/o次数,从而提高数据访问性能。索引有很多种我们主要介绍常用的几种:为什么添加了索引后,会加快查询速度呢?二、创建...

  • 周排行
  • 月排行
  • 年排行

精彩推荐