[Oracle]any, all解析

因为很少用到, 所以几乎忘记了这几个函数, 不过它们还是很有用的使用它们可以大大简化一些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。

http://www.cnblogs.com/Ronger/archive/2011/12/28/2305175.html

时间: 2024-10-05 05:07:38

[Oracle]any, all解析的相关文章

oracle logminer全解析

今天写篇原创的,把在工作中遇到的logminer问题总结下 (1)简介: logminer 工具即可以用来分析在线,也可以用来分析离线日志文件,即可以分析本身自己数据库的重作日志文件,也可以用来分析其他数据库的重作日志文件. 总的说来,logminer工具的主要用途有:  1. 跟踪数据库的变化:可以离线的跟踪数据库的变化,而不会影响在线系统的性能.  2. 回退数据库的变化:回退特定的变化数据,减少point-in-time recovery的执行.  3. 优化和扩容计划:可通过分析日志文件

Oracle 监听器日志解析

Oracle监听器是驻留在Oracle实例所在服务器上的独立进程.作为客户端进程连接实例的重要沟通组件,Oracle监听器扮演着重要的地位.本篇将从监听器日志入手,分析阅读监听器日志和日常监听器常见行为. 1.Oracle监听器功能 在笔者<说说Oracle监听器>(http://space.itpub.net/17203031/viewspace-682627)系列中,已经比较清楚的介绍过Oracle监听器的工作方式和体系地位.这里简要加以累述. Oracle监听器是一个独立的操作系统进程,

《Oracle 稽核方式解析 [audit]》

摘要:<Oracle 稽核方式解析 [audit]> 以下是参考网络上文档后写下,若有错误还请指教,谢谢. ----------------------------------------------------------------------------------------------------------------- 1.Oracle audit:? 特定对象对某种权限的使用:对特定表 select.insert.update.delete: ? 例如: A. Ting 使用到

Oracle的硬解析和软解析

提到软解析(soft prase)和硬解析(hard prase),就不能不说一下Oracle对sql的处理过程.当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进行几个步骤的处理过程:1.语法检查(syntax check)检查此sql的拼写是否语法.2.语义检查(semantic check)诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限.3.对sql语句进行解析(prase)利用内部算法对sql进行解析,生成解析树(parse tree

解决使用OCI连接oracle LNK2019: 无法解析的外部符号的问题

据我所知,在使用OCI连接Oracle时出现LNK2019: 无法解析的外部符号问题的情况有两种: 一.没有引入附加依赖项,右键项目->属性->配置属性->链接器->输入中添加oraocci11.lib(视数据库版本而定).或在程序之中添加 #pragma comment(lib , "oraocci11.lib"). 二.64位的机器,64位的oracle数据库,编译为win32.应该编译为64位的程序(在属性,配置管理器中修改).这个问题真是疏忽了.

【Oracle学习笔记-2】Oracle基础术语解析

来自为知笔记(Wiz) 附件列表 Oracle概念解析.png 表空间.png 大小关系.png 段segment.png 块block.png 区entent.png 数据库基本概念.png

Oracle Database Links解析

什么是Database Links呢? 首先我们阐述下它的作用:使用户可以通过一个数据库访问到另外一个远程数据库. 那么Database Link是存储着远程数据库的连接信息. 如下图所示: 用户Scott可以在本地数据库上查询远程数据库的emp表,我们可以在我们的本地数据库上建立一个别名(Synonym) emp,然后我们就可以直接通过select * from emp来查询远程数据库上的emp表,而无需通过select * from [email protected]的方式来查询. 这个远程

Oracle SCN机制解析

SCN(System Chang Number)作为oracle中的一个重要机制,在数据恢复.Data Guard.Streams复制.RAC节点间的同步等各个功能中起着重要作用.理解SCN的运作机制,可以帮助你更加深入地了解上述功能. 在理解SCN之前,我们先看下oracle事务中的数据变化是如何写入数据文件的: 1.事务开始: 2.在buffer cache中找到需要的数据块,如果没有找到,则从数据文件中载入buffer cache中: 3.事务修改buffer cache的数据块,该数据被

Oracle常见名词解析

创建用户 概述:在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用. create user 用户名 identified by 密码; (oracle有个毛病,密码必须以字母开头,如果不以字母开头,它不会创建用户) 给用户修改密码 概述:如果给自己修改密码可以直接使用 password 用户名 如果给别人修改密码则需要具有dba的权限,或是拥有alter user的系统权限 SQL> alter user 用户名 identifie

Oracle 并行案例解析

|   0 | SELECT STATEMENT         |          |   107 |  2782 |     3  (34)| 00:00:01 |        |      |            | |   1 |  PX COORDINATOR          |          |       |       |            |          |        |      |            | |   2 |   PX SEND QC