`
kavy
  • 浏览: 890660 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle distinct的用法

 
阅读更多

Oracle distinct的用法

20080716 下午 3:18

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

下面先来看看例子:

table

字段1     字段2
   id        name
   1           a
   2           b
   3           c
   4           c
   5           b

库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。

比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。

select distinct name from table
得到的结果是:

  

----------  

name
   a
   b
   c

好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧:

select distinct name, id from table

结果会是:

----------  

id name
   1 a
   2 b
   3 c
   4 c
   5 b

distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得idname都相同的才会被排除。。。。。。。

我们再改改查询语句:

select id, distinct name from table

很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能,照样报错。

------------------------------------------------------------------------------------------------------------

下面方法可行:

select *, count(distinct name) from table group by name

结果:

   id name count(distinct name)
   1 a 1
   2 b 1
   3 c 1

最后一项是多余的,不用管就行了,目的达到。。。。。

group by 必须放在 order by limit之前,不然会报错

 

分享到:
评论

相关推荐

    oracle中distinct的用法详解

    在Oracle数据库中,`DISTINCT` 是一个非常重要的SQL关键字,用于从查询结果中去除重复的行。在本文中,我们将深入探讨`DISTINCT`的用法及其在不同情况下的应用。 首先,让我们看一个简单的例子。假设我们有一个名为...

    23.Oracle的distinct关键字1

    在本例中,我们将通过创建一个名为`T_GIRL`的超女基本信息表,并插入一些测试数据来演示`DISTINCT`关键字的使用方法。 首先,我们创建了`T_GIRL`表,包含了超女的编号`id`、姓名`name`、颜值`yz`、身材`sc`、体重`...

    oracle-distinct-的使用方法.doc

    oracle-distinct-的使用方法.doc

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

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

    ORACLE函数及其用法

    ### ORACLE函数及其用法详解 #### 概述 Oracle是一种广泛使用的数据库管理系统,它提供了丰富的内置函数,这些函数能够帮助开发者和数据库管理员更高效地处理数据。本文将详细介绍Oracle中的一些常用函数及其应用...

    oracle查询重复数据方法

    第五种方法是使用 Distinct 语句来查询和删除重复数据。例如,下面的语句可以查询出表中无重复记录的结果集: ```sql select distinct * from tableName ``` 这种方法可以根据所有字段来判断重复记录,并返回无重复...

    oracle中使用group by优化distinct

    优化`DISTINCT`的一种方法是使用`GROUP BY`子句,它可以将相同的数据分组,然后对每个组进行聚合操作,例如计算数量或求和。在某些情况下,可以将`DISTINCT`转换为`GROUP BY`,并结合聚合函数如`COUNT()`,以达到...

    Oracle提高查询效率的方法

    "Oracle 提高查询效率的方法" Oracle数据管理系统作为...提高 Oracle 查询效率需要从多方面考虑,包括优化 SQL 语句、创建合理的索引、选择合适的基础表、调整 WHERE 子句的顺序、避免使用 DISTINCT 和 ORDER BY 等。

    Oracle 19C SQL调优指南 中文版 DBA优化利器

    - **使用EXPLAIN PLAN分析执行计划**:理解执行计划的各个部分,如访问方法、连接类型、排序操作等。 - **使用绑定变量**:避免全表扫描和提高查询效率。 - **避免不必要的排序和临时表**:优化GROUP BY、ORDER ...

    Oracle连接和使用.pdf

    本文将针对Oracle数据库的连接与使用方法,特别是针对初学者,进行详细讲解。 首先,我们关注的是sqlplus,它是Oracle提供的一个命令行工具,用于与数据库交互。sqlplus不仅适用于初学者,也深受经验丰富的DBA喜爱...

    Oracle使用指南

    这篇指南主要涵盖Oracle数据库的基本查询操作,包括SQL语句的构造、算术表达式、列的别名、连接操作以及处理重复数据的方法。 1. **基本的SELECT语句**:在SQL中,`SELECT`语句用于从表中获取数据。`SELECT *`表示...

    Informix迁移至Oracle数据库的研究.pdf

    - DISTINCT关键字在Oracle中与LIMIT功能类似,可以结合ROWNUM来限制返回的行数。 - WHERE子句中的条件判断,Oracle通常使用代替,并且在处理日期和字符串时,可能需要调整比较运算符和格式。 5. **异常处理**: ...

    【Oracle】LISTAGG函数的使用.pdf

    1. 作为分析函数,类似于 row_number()、rank()、dense_rank() 等函数,使用方法相似: LISTAGG(合并字段, 连接符) WITHIN GROUP(ORDER BY 合并字段的排序) OVER(PARTITION BY 分组字段) 2. 作为聚合函数,类似于 ...

    Oracle数据库表建立字段唯一性的方法

    - 若要检查表是否有重复值,可以使用`DISTINCT`关键字查询,或使用`GROUP BY`结合`HAVING`来查找。 8. **源码和工具** - 针对标签中的"源码",在实际开发中,创建和管理唯一性通常涉及SQL脚本或编程语言(如Java...

    Oracle SQL编写规范

    Oracle SQL编写规范是指在编写SQL语句时的一些基本原则和方法,旨在提高SQL语句的执行效率和可读性。以下是Oracle SQL编写规范的详细解释: 1. 尽量用索引,特别在从大量数据中返回小部分数据时 使用索引可以大大...

    Oracle 表空间 收缩

    #### 四、直接尝试收缩表空间的问题及解决方法 直接尝试收缩表空间时,可能会遇到错误ORA-03297:“文件包含在请求的RESIZE值以外使用的数据”。这是因为Oracle数据文件在有数据的情况下能够自动扩展,但无法自动...

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

    Oracle SQL 中去除重复记录是数据库操作中的常见需求,但有时我们可能希望避免使用`DISTINCT`关键字,因为它可能会导致性能下降,特别是在处理大量数据或涉及多个字段时。`DISTINCT`关键字会去除所有查询结果中的...

    Oracle开发必备手册

    在Oracle SQL的学习中,第一章基本查询语句介绍了如何从数据库中提取信息,包括SELECT语句的基本结构、选择列、过滤行(WHERE子句)、聚合函数(如COUNT, SUM, AVG, MAX, MIN)以及DISTINCT关键字的使用。...

    Oracle删除表中的重复数据

    ### Oracle删除表中的重复数据方法 在Oracle中删除表中的重复数据,可以采用多种策略,但通常涉及创建一个临时表来保存去重后的数据,然后用这个临时表覆盖原始表。这种方法可以避免直接修改原表带来的风险,确保...

Global site tag (gtag.js) - Google Analytics