`
hpjianhua
  • 浏览: 235810 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

Oracle数据库下 distinct 与row_number() over的用法

阅读更多
一.先介绍下Oracle去重关键字distinct的用法:

1.distinct对单表去重是比较简单的,如:

select distinct r.user_id r.name from ap_user_role r;


这个是对单个用户只出一条记录的用法。 



2.对多个表的联合查询去重使用distinct方法,请看下面的方法,判断是否有问题?

(1).案例一:

 select distinct r.user_id ,r.name , u.id,u.sex from ap_user_role r, ap_user u where

 u.id=r.user_id;


用法正确吗?

(2).案例二:

 select distinct t.user_id from (
 
 select r.user_id,r.name, u.id,u.sex from ap_user_role r, ap_user u
 
 where u.id=r.user_id
 
 ) t


这两种用法那种正确呢?

二.再来介绍下Oracle函数ROW_NUMBER() OVER的用法:

语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

简单的说row_number()从一开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER()

OVER (ORDER BY create_time DESC) 是先把create_time列降序,再为降序以后的每条

create_time记录返回一个序号。

如何使用呢?请看以下案例:

select t.* from (

select u.id, u.name, r.user_id,r.name, row_number() over(partition by u.id order 

by u.create_time desc) as num 

from ap_user u, ap_user_role r where u.id=r.user_id

) t where t.num=1;


请试一下这几种用法,查看下结果是如何的呢?


0
1
分享到:
评论
2 楼 hpjianhua 2012-11-21  
houxinyou 写道
怎么没有答案呢?

答案是:案例一达不到预期的效果,错误; 案例二正确
1 楼 houxinyou 2012-11-21  
怎么没有答案呢?

相关推荐

    SQL中distinct 和 row_number() over() 的区别及用法

    主要介绍了SQL中distinct 和 row_number() over() 的区别及用法的相关资料,需要的朋友可以参考下

    row_number,根据多个字段过滤,partition by

    过滤方法有distinct 获取是整行 重复 但只想过滤2个或2个以上不是所有字段 怎么办? 根据多个字段过滤 比如表:teacher表 id ,name ,sex,idNumber,phone,date; 需求 根据name和idnumber和date过滤重复数据只取...

    oracle rownum和distinct

    oracle rownum和distinct

    oracle数据库经典题目

    在Oracle数据库中,模式与数据库用户是一一对应的 C.一个表可以属于多个模式 D.一个模式可以拥有多个表 16.唯一约束与主键约束的一个区别是?( D ) A.唯一约束的列的值不可以有重复值 B.唯一约束的列的值可以...

    浅谈sql数据库去重

     关于sql去重最常见的有两种方式:DISTINCT和ROW_NUMBER(),当然了ROW_NUMBER()除了去重还有很多其他比较重要的功能,一会我给大家简单说说我自己在实际中用到的。  假如有张UserInfo表,如下图:      现在...

    count_distinct:在PostgreSQL中扩展以COUNT(DISTINCT ...)聚合的替代方法

    此扩展提供了COUNT(DISTINCT ...)的替代方法,该方法对于大量数据通常会以排序和不良性能而告终。 职能 有两个多态聚合函数,用于处理按值传递的固定长度数据类型(即,在64位计算机上最多为8B值): count_...

    oracle函数介绍(6) 著名函数之分析函数.doc

    1、AVG([DISTINCT|ALL] expr) OVER(analytic_clause) 计算平均值。 例如: --聚合函数 SELECT col, AVG(value) FROM tmp1 GROUP BY col ORDER BY col; --分析函数 SELECT col, AVG(value) OVER(PARTITION BY col ...

    完美解决distinct中使用多个字段的方法

    完美解决distinct中使用多个字段的方法,完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法

    mysql去重查询的三种方法

    mysql去重查询的三种方法:文章通过本人的真实测试,以图文并茂的方式实现了mysql数据库...包含mysql常用的使用distinct剔重、使用group by提重、使用开窗函数row_number()或类row_number()方法。详细内容请查看文档。

    23.Oracle的distinct关键字1

    如果我想知道颜值有哪些取值,所以希望从结果集中去掉重复的记录,加上distinct关键字,位置在select和字段列表之间。distinct是从结果集中筛选出唯

    Oracle数据库Sql性能调优

    1.1 选用适合的ORACLE优化器 4 ...1.45 CBO下使用更具选择性的索引 29 1.46 避免使用耗费资源的操作 29 1.47 日期使用 29 1.48 使用显式的游标(CURSORS) 30 1.49 优化EXPORT和IMPORT 30 1.50 分离表和索引 30

    oracle中distinct的用法详解

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

    Oracle事例

    查看用户下所有的表 SQL>select * from user_tables; <7> alter user语句的quota子句限制用户的磁盘空间 如:alter user jf quota 10M on system; 27、查看放在ORACLE的内存区里的表 SQL>select table_name,...

    To-find-the-right-number.rar_number

    Given 2-15 distinct positive integers, and your task is to calculate these numbers there are the number of number of pairs met: the number in a number of other twice.

    ChatGPT能写出比数据分析师更好的SQL吗?

    customer_number, COUNT(DISTINCT order_number) AS order_number FROM orders GROUP BY customer_number ) SELECT customer_number FROM layer_1 ORDER BY order_number DESC LIMIT 1 下面是通过运行的时间: 现在...

    oracle sql 去重复记录不用distinct如何实现

    用distinct关键字只能过滤查询字段中所有记录相同的(记录集相同),而如果要指定一个字段却没有效果,另外distinct关键字会排序,效率很低 。 select distinct name from t1 能消除重复记录,但只能取一个字段,...

    oracle常用分析函数与聚合函数的用法

    今天是2019年第一天,在此祝大家新年快乐,梦想还在路上,让我们...rownumber ( ) over ( [partition by col] order by col ) rank() 是排名的函数,该函数组内排序后会进行跳号,分数相同的作为并列。 dense_rank()

    最全的oracle常用命令大全.txt

    下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 1、用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_...

Global site tag (gtag.js) - Google Analytics