因为很少用到, 所以几乎忘记了这几个函数, 不过它们还是很有用的使用它们可以大大简化一些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。
相关推荐
- 集合比较:`ANY`, `SOME`和`ALL`与比较运算符结合,用于与一组值进行比较。 - 模式匹配:`LIKE`用于字符串的模糊匹配,`NOT LIKE`则表示不匹配。 2. 简单SELECT查询: - SELECT语句用于从表中选取特定列的数据...
在描述中提到的符号和操作符,例如`+`、`-`、`*`、`/`用于基本的数学运算,`IS NULL`和`IS NOT NULL`用于检查值是否存在,`BETWEEN`、`NOT BETWEEN`用于区间判断,`IN`、`NOT IN`、`ANY`、`SOME`、`ALL`用于集合比较...
在理解Oracle函数之前,首先需要掌握SQL的基础知识,因为这些基础知识对于正确地构建和执行SQL查询至关重要。本节将详细介绍SQL语句中常用的操作符及其应用示例。 ##### 1.1 SQL语句所用符号 SQL语言中使用的各种...
根据提供的文件内容,可以看出文档主要涉及的是Oracle SQL的基础语法与函数使用详解。下面将对文档中的各个知识点进行详细的解释和扩展。 ### Oracle SQL基础语法与函数详解 #### 1. 基本运算符 在Oracle SQL中,...
ANY 和 SOME 函数可以用来比较子查询结果,ALL 函数可以用来比较子查询结果的所有值。 示例: ```sql SELECT * FROM TABLEA WHERE FLD > ALL (SELECT FLD FROM TABLEA); SELECT * FROM TABLEA WHERE FLD > ANY...
ANY/SOME、ALL关键字的使用也在此章节中被涵盖,它们是处理子查询结果时常用的比较操作。 第7章iSQL*Plus介绍了iSQL*Plus的基本操作,包括启动与关闭、默认访问地址、定义常量与绑定变量、以及SET命令的使用。 第8...
同时,还讲解了ANY/SOME、ALL这些比较操作符的使用。 第7章 iSQL*Plus iSQL*Plus是Oracle提供的基于Web的SQL和PL/SQL命令行界面。本章节介绍了如何启动和关闭iSQL*Plus,如何设置默认访问地址,以及如何使用SET命令...
- **多行子查询**:当子查询返回多行结果时,可以使用关键字ANY/SOME 或 ALL 进行比较。 - **分组查询**:通过GROUP BY对数据进行分组,然后结合聚合函数如COUNT、SUM等进行统计分析。 - **HAVING 子句**:与WHERE...
- 多行子查询返回多个值,可以使用IN、ANY/SOME、ALL等操作符与之配合使用。 #### 七、操纵数据 **7.1 学习目的** - 本章主要讲解如何使用数据操纵语言(DML)来进行数据的插入、更新和删除等操作。 **7.2 数据...
- **比较操作符和集合操作符**: 如IN、ANY/SOME、ALL等。 #### 八、高级查询 高级查询包括复杂的查询操作,如窗口函数、集合操作等。 - **窗口函数**: 如ROW_NUMBER()、RANK()、DENSE_RANK()等,用于在结果集中的...
* ANY、SOME 和 ALL:将值与列表或子查询进行比较 7. 设置操作符 * UNION:合并两个或多个独立查询的结果 * INTERSECT:实现两个独立查询的结果的交集 * MINUS:从一个结果集中减去另一个结果(也就是求差集) ...
集合子查询涉及到集合运算符,如IN、NOT IN、ANY、SOME和ALL。这些运算符允许我们根据子查询结果集与主查询中的值进行比较。比如找出属于特定部门且薪水高于部门平均值的员工: ```sql SELECT * FROM employees ...
* 多行子查询使用多行比较操作符,例如:IN、ANY、ALL、SOME等。 六、子查询中的组函数 * 子查询可以与组函数结合使用,例如:MIN、MAX、SUM、AVG等。 * 子查询中的组函数可以用于对结果进行分组和聚合。 七、子...
- **集合子查询**:返回多行数据,可以与ANY、ALL或SOME操作符结合使用。 - **相关子查询**:依赖于外部查询的值进行计算。 3. **子查询展开**(Subquery Unnesting): 这是一种查询优化技术,Oracle会尝试将子...
Oracle数据库系统提供了强大的查询能力,本章主要涵盖了Oracle数据的复杂查询技巧,包括多表查询、排序函数和正则表达式查询。以下是对各部分的详细解析: **9.1 多表嵌套查询** 嵌套查询是Oracle查询中的一种重要...
3. **子查询**:了解嵌套查询的用法,如在FROM、WHERE或HAVING子句中使用子查询,以及IN、EXISTS和ANY/SOME操作符。 4. **窗口函数**:学习ROW_NUMBER(), RANK(), DENSE_RANK(), LAG(), LEAD()等窗口函数,实现行号...