oracle in _all和any的区别,oracle经验之ANY,SOME,ALL区别

本文介绍了SQL中的ANY、SOME和ALL关键字的用法,以及它们与EXISTS和IN子句的关系。ANY和SOME在功能上等价,可用于简化查询。ALL用于选取满足条件的所有值。HAVING与WHERE的区别在于,HAVING用于聚合后的条件筛选。文章还提及了数据库性能优化的一些考虑,例如块读取和JOIN效率。
摘要由CSDN通过智能技术生成

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 ......

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值