Heim > Datenbank > MySQL-Tutorial > Oracle去掉表重复数据

Oracle去掉表重复数据

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-07 17:30:42
Original
1154 Leute haben es durchsucht

今天在做项目过程中,碰到Oracle数据库表存在重复记录,显示的时候需要去掉重复的数据。想了老半天,最终用rank() over (partiti

今天在做项目过程中,碰到Oracle数据库表存在重复记录,显示的时候需要去掉重复的数据。想了老半天,最终用rank() over (partition by 分组字段 order by 排序字段 顺序)

解决了此问题。

一、首先介绍下rank() over (partition by 分组字段 order by 排序字段 顺序):

语法:

rank() over (order by 排序字段 顺序)

rank() over (partition by 分组字段 order by 排序字段 顺序)

1.顺序:asc|desc  名次与业务相关:

2.分区字段:根据什么字段进行分区。

问题:分区与分组有什么区别?

•分区只是将原始数据进行名次排列(记录数不变),

•分组是对原始数据进行聚合统计(记录数变少,每组返回一条)。

注意:使用rank()over(order by 排序字段 顺序)排序的时候,空值是最大的

(如果排序字段为null,可能造成在排序时将null字段排在最前面,,影响排序的正确性。

所以建议将dense_rank()over(order by 列名 排序)改为dense_rank()over(order by 列名 排序 nulls last)

这样只要排序字段为null,就会放在最后,而不会影响排序结果)。

二、例子

首先创建一张test表,f分别有id,no两个字段,这张表中的数据为:

id    no

1      11

2      22

3      22

4      33

5      55

需要将此表中no字段中的22重复数据去掉一条,SQL语句为:

select b.id,b.no from (

select rank() over(partition BY t.no order by t.id) aa,t.* from test t) b

where b.aa=1

执行结果为:

id    no

1      11

2      22

4      33

5      55

推荐阅读:

Oracle比较快的删除重复数据的方式

使用临时表删除Oracle重复数据

Oracle 删除重复数据只留一条

Opendedup 1.1.6 发布,重复数据删除案

linux

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage