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
相关文档:
.net调用oracle出现无法加载oramts.dll
在调用oracle时出现无法加载oramts.dll 这时可以尝试以下方法:
先要看在连接字符串中.是否添加了enlist=false;通常不添加这个属性..系统将不会去自动调用oramts.dll
详情请看
将msvcrtd.dll拷到 C:windows\system32\
......
The DB File Sequential Read wait event generally indicates a single block read (an index read,
for example). A large number could indicate poor joining orders of tables or unselective indexing.
This number will certainly be large (normally) for a high-transaction, well-tuned system. You ......
今天参加了Oracle & SUN合并后第一次与合作伙伴及客户的通气会。整个会议给我的感觉是:Oracle雄心勃勃,SUN意气风发,而我自己,心怀惴惴。 Oracle有了SUN,那么从硬件到软件Oracle的产品线就十分齐备了。Oracle半年前推出11gR2 for linux,接着for solar ......
select count(*) from t1;
这句话比较简单,但很有玄机!对这句话运行的理解,反映了你对数据库的理解深度!
建立实验的大表他t1
SQL> conn scott/tiger
已连接。
SQL> drop table t1 purge;
表已删除。
SQL> create table t1 as select * from emp where 0=9;
表已创建。
SQL> insert into t1 sele ......