[转抄]oracle单表查询去重(效率比较高的一种方式)

 1 select
 2     *
 3 from
 4      (
 5         select
 6              a.*, rownum r_n
 7         from
 8             A_TEST a
 9      ) tt
10 where
11     tt.r_n in
12     (
13         select
14             min(rownum)
15         from
16             A_TEST t
17         group by name  //name为去重字段
18     )            

查询原理是:

  将表按要去重的字段分组,查询出分组后每组的最小行号,以此作为筛选条件,从表中取出这些记录。

(说明:此方法为网络获取,并没有对大量数据进行测试,不知效率如何)

时间: 2024-10-09 17:10:41

[转抄]oracle单表查询去重(效率比较高的一种方式)的相关文章

[数据库] Oracle单表查询总数及百分比和数据横向纵向连接

这是最近项目关于SQL语句的,本文简单记录并总结以下几个知识点: 1.如何统计一张表中某个字段的总数,如不同"专业"的学生数及所占百分比: 2.如何联系另一张表进行查询某个字段的总数及百分比: 3.简单介绍decode防止分母为0和trunc保留小数位数等函数: 4.通常复杂的SQL语句会涉及到查询结果横向连接和纵向连接,这里进行介绍. 最近买了本<Oracle查询优化改写技巧与案例·有教无类 落落>,推荐大家也阅读下.后面我也会补充一些相关数据的知识,希望对大家有所帮助吧

oracle——单表查询

1. 基本(基础)查询 1.1. 基本查询语法 基本查询是指最基本的select语句. [语法] [知识点]如何使用工具进行查询 在plsql developer中打开查询窗口(执行sql语句): 执行语句的操作: 选中要执行的语句,点击执行按钮或者按快捷键F8,下方会显示查询的结果. 显示下一页记录和显示剩余的所有页的记录: 注:如果想学习工具的详情使用,可参阅文档<plsql developer中文手册.pdf> 1.2. 选择列 [语法] 选择全部列: 选择特定列: [知识点] 两种语法

Oracle的单表查询语句

使用Oracle 数据库的测试表单: --单表查询数据 语法 select (查询) * 所有 /查询的字段,多个字段 ,隔开 from (来自) 表名称 --查询所有员工的信息 select * from scott.emp; select * from dept; --查询所有员工的编号,姓名和职位 指定字段名查找数据 select empno,ename,job from emp; --查询所有员工的编号,姓名和年薪 select * from emp; select empno,enam

oracle数据库之单表查询

作为一合格的测试人员对数据库的单表查询.多表查询.分组查询.子查询等等这些基本查询方法还是要会的.不然到企业中,容易被一些人鄙视,或者说如果数据库学不好,表查不明白,那么对自己能力来说也是一种侮辱,因为你可以证明自己,你是可以的,尤其是你在面试的时候面对面试官的给你出的一道sql语句题目,你能马上用你的套路把这道题做出了,那么恭喜你过了第一个小关卡.ok,我们今天学习一下数据库中的第一个查询,也是最简单,容易入门的查看----单表查询. 我们在上一篇中创建了一个classinfo和student

MySQL多表关联查询效率高点还是多次单表查询效率高,为什么?

MySQL多表关联查询效率高点还是多次单表查询效率高,为什么? <阿里巴巴JAVA开发手册>里面写超过三张表禁止join 这是为什么?这样的话那sql要怎么写? 原文地址:https://www.cnblogs.com/gotodsp/p/10090382.html

单表查询: where group by 分组 having distinct 去重 order by 排序 limit 多表查询 子查询 连表查询

今日内容 表查询 单表查询: where group by 分组 having distinct 去重 order by 排序 limit 多表查询 子查询 连表查询 单表查询 前期表准备 create table emp( id int not null unique auto_increment, name varchar(20) not null, sex enum('male','female') not null default 'male', #大部分是男的 age int(3) u

Oracle单表去重复(一)

去重有两层含义,一:是记录完全一样:二:是符合一定条件的认为是重复. 根据表的数量,去重可划分为:单表去重和多表关联去重. 对于去重,一般最容易想到的是用distinct,而distinct只能对记录完全重复的记录保留一条. distinct使用的是二重循环的方式来去重的,如果数据量非常大的时候,会导致性能急剧下降. 例如:select distinct 字段名 from 原表; 此应用案例,主要有删除表中的完全重复的记录: insert into 临时表 select distinct 字段名

Oracle单表去重复(二)

Oracle单表去重 去重有两层含义,一:是记录完全一样.二:是符合一定条件的认为是重复. 根据表的数量,去重可划分为:单表去重和多表关联去重. 对于去重,一般最容易想到的是用distinct,而distinct只能对记录完全重复的记录保留一条. distinct使用的是二重循环的方式来去重的,如果数据量非常大的时候,会导致性能急剧下降. 我们前一篇文章已经给出了详解,你可以去查看 Oracle单表去重复(一) 下面是一个单表去重的测试,认为name字段相同的即为重复记录,要查询出一个结果,过滤

mysql记录的增删改和单表查询

1.记录的详细增加方式 insert into 表名[(字段1,字段2,~)] values (值1,值2,~), (值1,值2,~) into可以省略.表名后的字段可选 如果写了表名后的字段名,后面values 中必须与表名的字段一一对应. 如果没有写,后面的values中的值必须与表的所有字段一一对应. values后面可以给多组值,用逗号隔开. 2.记录的详细删除方式 delete from 表名 [where 条件] 条件不写,是删除所有记录这种删除是一行一行的删除,注意自增id不会归零