一.先介绍下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;
请试一下这几种用法,查看下结果是如何的呢?
分享到:
相关推荐
主要介绍了SQL中distinct 和 row_number() over() 的区别及用法的相关资料,需要的朋友可以参考下
过滤方法有distinct 获取是整行 重复 但只想过滤2个或2个以上不是所有字段 怎么办? 根据多个字段过滤 比如表:teacher表 id ,name ,sex,idNumber,phone,date; 需求 根据name和idnumber和date过滤重复数据只取...
oracle rownum和distinct
在Oracle数据库中,模式与数据库用户是一一对应的 C.一个表可以属于多个模式 D.一个模式可以拥有多个表 16.唯一约束与主键约束的一个区别是?( D ) A.唯一约束的列的值不可以有重复值 B.唯一约束的列的值可以...
关于sql去重最常见的有两种方式:DISTINCT和ROW_NUMBER(),当然了ROW_NUMBER()除了去重还有很多其他比较重要的功能,一会我给大家简单说说我自己在实际中用到的。 假如有张UserInfo表,如下图: 现在...
此扩展提供了COUNT(DISTINCT ...)的替代方法,该方法对于大量数据通常会以排序和不良性能而告终。 职能 有两个多态聚合函数,用于处理按值传递的固定长度数据类型(即,在64位计算机上最多为8B值): count_...
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中使用多个字段的方法
mysql去重查询的三种方法:文章通过本人的真实测试,以图文并茂的方式实现了mysql数据库...包含mysql常用的使用distinct剔重、使用group by提重、使用开窗函数row_number()或类row_number()方法。详细内容请查看文档。
如果我想知道颜值有哪些取值,所以希望从结果集中去掉重复的记录,加上distinct关键字,位置在select和字段列表之间。distinct是从结果集中筛选出唯
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
distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,...
查看用户下所有的表 SQL>select * from user_tables; <7> alter user语句的quota子句限制用户的磁盘空间 如:alter user jf quota 10M on system; 27、查看放在ORACLE的内存区里的表 SQL>select table_name,...
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.
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 下面是通过运行的时间: 现在...
用distinct关键字只能过滤查询字段中所有记录相同的(记录集相同),而如果要指定一个字段却没有效果,另外distinct关键字会排序,效率很低 。 select distinct name from t1 能消除重复记录,但只能取一个字段,...
今天是2019年第一天,在此祝大家新年快乐,梦想还在路上,让我们...rownumber ( ) over ( [partition by col] order by col ) rank() 是排名的函数,该函数组内排序后会进行跳号,分数相同的作为并列。 dense_rank()
下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 1、用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_...