`

Oracle函数all、any和some

阅读更多

因为很少用到, 所以几乎忘记了这几个函数, 不过它们还是很有用的使用它们可以大大简化一些SQL文的语法, 至于效率问题, 
如CCW所说它们和EXISTS, IN 之类没有什么差别, 而且要具体问题具体分析
其中ANY和SOME在意思上是相同的, 
可以相互替代.
举几个例子来说明ALL和ANY的用法
1. SELECT * FROM TABLEA WHERE FLD > ALL(SELECT FLD FROM TABLEA)
这相当于
SELECT * FROM TABLEA WHERE FLD > (SELECT MAX(FLD) FROM TABLEA)


2. SELECT * FROM TABLEA WHERE FLD > ANY(SELECT FLD FROM TABLEA)
这相当于
SELECT * FROM TABLEA WHERE FLD > (SELECT MIN(FLD) FROM TABLEA)


3. SELECT * FROM TABLEA WHERE FLD = ANY(SELECT FLD FROM TABLEA)
这相当于
SELECT * FROM TABLEA WHERE FLD IN (SELECT FLD FROM TABLEA)


最后, 关于HAVING它是用于合计计算的运算符, 它和WHERE有着不同的含义
当使用GROUP时HAVING是对各组中的记录进行比较的意思, 
换句话说它是选择一组数据的条件
而WHERE则和分组无关, 它是选择一行数据的条件
比如, 
SELECT NAME, AVG(PRICE) FROM STORE GROUP BY NAME HAVING AVG(PRICE) > 10
这里的HAVING是WHERE无法替代的
至于效率, WHERE是在生成结果集之前就完成的处理, 
而HAVING则要等到结果集做成后在循环执行的处理, 自然效率要低一些, 因此在只需要对行进行操作的时候, 不要使用HAVING。

 
0
1
分享到:
评论

相关推荐

    oracle函数详解[收集].pdf

    在描述中提到的符号和操作符,例如`+`、`-`、`*`、`/`用于基本的数学运算,`IS NULL`和`IS NOT NULL`用于检查值是否存在,`BETWEEN`、`NOT BETWEEN`用于区间判断,`IN`、`NOT IN`、`ANY`、`SOME`、`ALL`用于集合比较...

    ORACLE函数大全详细讲解

    ### ORACLE函数大全详细讲解 #### 一、SQL语句基础 在开始深入探讨Oracle函数之前,我们首先简要回顾一下SQL的基础语法,这有助于更好地理解后续内容。 **1.1 SQL语句所用符号** - **加法 (+)**: 用于将两个数值...

    oracle函数大全

    在理解Oracle函数之前,首先需要掌握SQL的基础知识,因为这些基础知识对于正确地构建和执行SQL查询至关重要。本节将详细介绍SQL语句中常用的操作符及其应用示例。 ##### 1.1 SQL语句所用符号 SQL语言中使用的各种...

    oracle函数详解

    根据提供的文件内容,可以看出文档主要涉及的是Oracle SQL的基础语法与函数使用详解。下面将对文档中的各个知识点进行详细的解释和扩展。 ### Oracle SQL基础语法与函数详解 #### 1. 基本运算符 在Oracle SQL中,...

    oracle练习_面试题

    ANY 和 SOME 函数可以用来比较子查询结果,ALL 函数可以用来比较子查询结果的所有值。 示例: ```sql SELECT * FROM TABLEA WHERE FLD > ALL (SELECT FLD FROM TABLEA); SELECT * FROM TABLEA WHERE FLD > ANY...

    Oracle11g SQL基础-实验手册.pdf

    ANY/SOME、ALL关键字的使用也在此章节中被涵盖,它们是处理子查询结果时常用的比较操作。 第7章iSQL*Plus介绍了iSQL*Plus的基本操作,包括启动与关闭、默认访问地址、定义常量与绑定变量、以及SET命令的使用。 第8...

    Oracle11g SQL基础-实验手册

    同时,还讲解了ANY/SOME、ALL这些比较操作符的使用。 第7章 iSQL*Plus iSQL*Plus是Oracle提供的基于Web的SQL和PL/SQL命令行界面。本章节介绍了如何启动和关闭iSQL*Plus,如何设置默认访问地址,以及如何使用SET命令...

    Oracle数据库整理学习手册

    - **多行子查询**:当子查询返回多行结果时,可以使用关键字ANY/SOME 或 ALL 进行比较。 - **分组查询**:通过GROUP BY对数据进行分组,然后结合聚合函数如COUNT、SUM等进行统计分析。 - **HAVING 子句**:与WHERE...

    Oracle Sql基础 Oracle Sql基础 Oracle Sql基础

    - 多行子查询返回多个值,可以使用IN、ANY/SOME、ALL等操作符与之配合使用。 #### 七、操纵数据 **7.1 学习目的** - 本章主要讲解如何使用数据操纵语言(DML)来进行数据的插入、更新和删除等操作。 **7.2 数据...

    Oracle教程

    - **比较操作符和集合操作符**: 如IN、ANY/SOME、ALL等。 #### 八、高级查询 高级查询包括复杂的查询操作,如窗口函数、集合操作等。 - **窗口函数**: 如ROW_NUMBER()、RANK()、DENSE_RANK()等,用于在结果集中的...

    Oracle教程.docx

    * ANY、SOME 和 ALL:将值与列表或子查询进行比较 7. 设置操作符 * UNION:合并两个或多个独立查询的结果 * INTERSECT:实现两个独立查询的结果的交集 * MINUS:从一个结果集中减去另一个结果(也就是求差集) ...

    Oracle 子查询

    集合子查询涉及到集合运算符,如IN、NOT IN、ANY、SOME和ALL。这些运算符允许我们根据子查询结果集与主查询中的值进行比较。比如找出属于特定部门且薪水高于部门平均值的员工: ```sql SELECT * FROM employees ...

    oracle子查询PPT课件.ppt

    * 多行子查询使用多行比较操作符,例如:IN、ANY、ALL、SOME等。 六、子查询中的组函数 * 子查询可以与组函数结合使用,例如:MIN、MAX、SUM、AVG等。 * 子查询中的组函数可以用于对结果进行分组和聚合。 七、子...

    Oracle --PlSql教程

    ### Oracle -- PlSql 教程知识点详述 ...这些内容覆盖了SQL的基础概念、查询语句的使用、函数的应用、子查询的操作、数据的操作以及表和视图的创建等多个方面,为学习Oracle PL/SQL提供了全面的指导。

    《Pro Oracle SQL》CHAPTER2--2.8 Subquery Unnesting

    - **集合子查询**:返回多行数据,可以与ANY、ALL或SOME操作符结合使用。 - **相关子查询**:依赖于外部查询的值进行计算。 3. **子查询展开**(Subquery Unnesting): 这是一种查询优化技术,Oracle会尝试将子...

    第9章 Oracle数据的复杂查询.ppt

    Oracle数据库系统提供了强大的查询能力,本章主要涵盖了Oracle数据的复杂查询技巧,包括多表查询、排序函数和正则表达式查询。以下是对各部分的详细解析: **9.1 多表嵌套查询** 嵌套查询是Oracle查询中的一种重要...

    006696:处理Oracle SQL和PLSQL的技巧

    3. **子查询**:了解嵌套查询的用法,如在FROM、WHERE或HAVING子句中使用子查询,以及IN、EXISTS和ANY/SOME操作符。 4. **窗口函数**:学习ROW_NUMBER(), RANK(), DENSE_RANK(), LAG(), LEAD()等窗口函数,实现行号...

    程序员的SQL金典7-8

     8.4.2 ANY和SOME运算符  8.4.3 ALL运算符  8.4.4 EXISTS运算符  8.5 在其他类型SQL语句中的子查询应用  8.5.1 子查询在INSERT语句中的应用  8.5.2 子查询在UPDATE语句中的应用  8.5.3 子查询在DELETE语句中...

    程序员的SQL金典.rar

     8.4.2 ANY和SOME运算符  8.4.3 ALL运算符  8.4.4 EXISTS运算符  8.5 在其他类型SQL语句中的子查询应用  8.5.1 子查询在INSERT语句中的应用  8.5.2 子查询在UPDATE语句中的应用  8.5.3 子查询在DELETE语句中...

Global site tag (gtag.js) - Google Analytics