1. > 智能数码 >

oracle去重 oracle去重多个字段

Oracle里的查询去重语句是怎么写得,求解,最好是有个范例。

SQL> select count(*) from table1; COUNT(*)

----------

65536SQL> select distinct a,b,c from table1;A B C

- - -

oracle去重 oracle去重多个字段oracle去重 oracle去重多个字段


1 3 2

1 3 1

2 3 3

3 3 3

2 3 2

1 3 3

1 1 1

2 3 1已选择8行。

oracle查询出来的数据怎么消除重复数据?

Oracle数据库重复的数据一般有两种去重方法,一、完全重复数据去重;二、部分字段数据重复去重。

一、完全重复数据去重方法

对于表中完全重复数据去重,可以采用以下SQL语句。

Code

CREATETABLE"#temp"AS (SELECTDISTINCT * FROM 表名);--创建临时表,并把DISTINCT 去重后的数据插入到临时表中

truncateTABLE 表名;--清空原表数据

INSERTINTO 表名(SELECT * FROM"#temp");--将临时表数据插入到原表中

oracle去重 oracle去重多个字段oracle去重 oracle去重多个字段


DROPTABLE"#temp";--删除临时表

具体思路是,首先创建一个临时表,然后将DISTINCT之后的表数据插入到这个临时表中;然后清空原表数据;再讲临时表中的数据插入到原表中;最后删除临时表。

二、部分数据去重方法

首先查找重复数据

select 字段1,字段2,count(*) from 表名 groupby 字段1,字段2 havingcount(*) > 1

将上面的>号改为=号就可以查询出没有重复的数据了。

想要删除这些重复的数据,可以使用下面语句进行删除:

deletefrom 表名 a where 字段1,字段2 in

(select 字段1,字段2,count(*) from 表名 groupby 字段1,字段2 havingcount(*) > 1)

oracle产品服务

甲骨文公司产品主要有以下几类:

甲骨文股份有限公司

oracle去重 oracle去重多个字段oracle去重 oracle去重多个字段


1.服务器及工具

数据库服务器:2013年最新版本Oracle 12C。

应用服务器:Oracle Application Server。

开发工具:OracleJDeveloper,Oracle Designer,Oracle Developer,等等。

2.企业应用软件

企业资源计划(ERP)软件。已有10年以上的历史。2005年,并购了开发企业软件的仁科软件公司(PeopleSoft)以增强在这方面的竞争力。

客户关系管理(CRM)软件。自1998年开始研发这种软件。2005年,并购了开发客户关系管理软件的希柏软件公司(Siebel)。

3. Oracle职业发展力计划(Oracle WDP)

Oracle WDP 全称为Oracle Workforce Development Program,是Oracle (甲骨文)公司专门面向学生、个人、在职人员等群体开设的职业发展力课程。Oracle的技术广泛应用于各行各业,其中电信、电力、金融、政府及大量制造业都需要Oracle技术人才,Oracle公司针对职业教育市场在全球推广的项目,其以低廉的成本给这部分人群提供Oracle技术培训,经过系统化的实训,让这部分人群能够迅速掌握Oracle最新的核心技术,并能胜任企业大型数据库管理、维护、开发工作。

Oracle如何去重?

select distinct clom_name from table_name --利用distinct对列clom_name去重

select clom_name from table_name a

where rowid =(select max(b.rowid) from table_name b where a.clom_name=b.clom_name);

--利用rowid唯一标识的特性对列clom_name 去重

oracle某列内数据去重

你这个不是对列去重。你这个是行数据。

对列的去重在查询语句加distinct,例如 select distinct XXX from tablename

或者载查询语句后面加group by

Oracle查询去除重数据

1。用rowid方法

据据oracle带的rowid属性,进行判断,是否存在重复,语句如下:

查数据:

select * from table1 a where rowid

!=(select max(rowid)

from table1 b where a.name1=b.name1 and

a.name2=b.name2......)

删数据:

delete from table1 a where rowid

!=(select max(rowid)

from table1 b where a.name1=b.name1 and

a.name2=b.name2......)

2.group by方法

查数据:

select count(num), max(name) from student --列出重复的记录数,并列出他的name属性

group by num

having count(num) >1 --按num分组后找出表中num列重复,即出现次数大于一次

删数据:

delete from student

group by num

having count(num) >1

这样的话就把所有重复的都删除了。

3.用distinct方法 -对于小的表比较有用

create table table_new as select distinct *

from table1 minux

truncate table table1;

insert into table1 select * from table_new;

oracle中rowid怎么用?

ROWID是一种数据类型,它使用基于64为编码的18个字符来唯一标识一条记录物理位置的一个ID,类似于Java中一个对象的哈希码,都是为了唯一标识对应对象的物理位置,需要注意的是ROWID虽然可以在表中进行查询,但是其值并未存储在表中,所以不支持增删改操作,下面看个例子:

[html]view plaincopy

SELECTROWNUM,ROWID,empno,ename,jobFROMempWHEREROWNUM<=5;

结果如下:

可以看到ROWID确实由18个字符组成,组成结构如下:

数据对象编号 文件编号 块编号 行编号

OOOOOO FFF BBBBBB RRR

至于ROWID的作用,由于ROWID用来唯一标识表中数据的唯一性,所以可以利用这个特性去除重复,举个例子,首先运行下述两行代码:

[html]view plaincopy

CREATETABLEdept_bakASSELECT*FROMdept;

INSERTINTOdept_bakSELECT*FROMdept;

得到一个如下的数据库表

很明显,数据有重复的,但是ROWID肯定不会重复的,那么就可以利用这个特性去重,简单示例代码如下:

[html]view plaincopy

DELETEFROMdept_bakWHEREROWIDNOTIN(SELECTMIN(ROWID)FROMdept_bakGROUPBYDEPTNO);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, website.service08@gmail.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息