易截截图软件、单文件、免安装、纯绿色、仅160KB

oracle经验之ANY,SOME,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


相关文档:

Oracle调整与SQL 语句的调优的关系

Oracle调整与SQL 语句的调优的关系
在Oracle调整中我们还会涉及到SQL 语句的调优,我们接下来就来看以下的 SQL 语句的调优。我们都知道 Oracle 中的 SQL 调优是一个相当复杂的主题,甚至是需要整本书来介绍 Oracle SQL 调优的细微差别。
不过有一些基本的规则是每个 Oracle DBA 都需要跟从的,这些规则可以改善他们系统的 ......

.net调用oracle出现无法加载oramts.dll

.net调用oracle出现无法加载oramts.dll
     在调用oracle时出现无法加载oramts.dll 这时可以尝试以下方法:
先要看在连接字符串中.是否添加了enlist=false;通常不添加这个属性..系统将不会去自动调用oramts.dll
详情请看
   将msvcrtd.dll拷到 C:windows\system32\
......

Oracle的优化器有两种优化方式(二)

15. /*+USE_CONCAT*/
对查询中的WHERE后面的OR条件进行转换为UNION  ALL的组合查询. (懵懂啊,先存着)
例如:
select /*+use_concat */ * from emp where deptno=10 OR empno=7788;
Execution Plan
----------------------------------------------------------
   0      S ......

Oracle复杂查询

1、查询两个日期之间的数据。
假设有表Table1,其创建表的sql语句为:
create table Table1(
StationID    NUMBER(10) Primary key,
Year           NUMBER(4)  not null,
Month        NUMBER(2)  n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号