sql酷毙的any和all

今天下午从6点多想到现在,俩小时啊! 我这是什么脑袋啊!!!尤其any,真是有点晕,现在懂了。

any和all通常与关系运算符一起使用,实现对子查询返回值的判断工作,如下:

 >any比子查询返回的任意结果大就行,即大于返回结果的最小值。

<any比子查询返回的任意结果小就行,即小于返回结果的最大值。

=any就是等于返回结果的任意值就行,等价于in。

>all比子查询返回的所有结果都大,即大于返回结果的最大值。

<all比子查询返回的所有结果都小,即小于返回结果的最小值。

=all无意义,逻辑上也不成立。

  1. ALL与ANY的关系就是,AND 与 OR 的关系。
  2. ANY与SOME等价,据说搞这两个不同的词出来是为了迁就英语语法。例如,在用= ANY 的地方在(英语)语法上就应该是= SOME。
  3. IN 与 = ANY 等价,均表示,变量在(子查询)列表之中,即 a IN (table B) 表示 a = ANY B.b
  4. NOT IN 与 <> ALL 等价,而不等于<> ANY,前两者均表示,变量不在(子查询)列表之中,即 a NOT IN (table B) 表示 a <> ALL B.b。而如果a <> ANY B.b,则只要任意一个b<>a就true了。
  5. IN 与 EXISTS 的性能区别主要来自,IN 会编列子查询的每行记录,然后再返回,而EXISTS 则只要遇到第一个满足条件的记录就马上返回。
  6. NOT IN 与 NOT EXISTS 并不能完全等价,只有当子查询中,select 关键字后的字段有not null约束或者有这种暗示时才用NOT IN。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值