oracle sal01,oracle中 all any in的用法

Oracle的嵌套子查询可以使用Some,Any和All对子查询中返回的多行结果进行处理。

Some表示满足其中一个的含义,是用or串起来的比较从句。

例如:SELECT * FROM emp WHERE empno = 'hmz' OR dept = '10'

Any也表示满足其中一个的含义,也是用or串起来的比较从句。

Some和Any的区别就是:Some用在“=”的比较关系中。

英文中的否定句中使用any肯定句中使用some,这一点是一样的。

some和any都有“一些”的意思

some用在肯定句中,any用在否定句或疑问句中。

【注1】但表示期望得到肯定回答的疑问句中用some。

【注2】any还有“任何”的意思,some没有

比较:She's too old to do any work.她年事已高,干不了什么活了。

She's old enough to do some work.她已长大了,可以干些活了。

All则表示满足其中所有查询结果的含义,使用and串起来的比较从句。

【实例】

查询比部门号为10的员工中的任何一个员工工资都要高的员工的姓名和个人工资。

也就是说只要比部门号为10中工资最少的员工高就满足条件。

SELECT ename,sal

FROM emp

WHERE sal > ANY(SELECT

sal FROM emp WHERE

deptno = 10);

这里推荐用any,如果你非要用some也是没有任何问题的,结果是一样的,只是一般来讲some用在“=”的比较从句中。

例如:

SELECT ename,sal

FROM emp

WHERE sal = SOME(SELECT

sal FROM emp WHERE

deptno = 30) AND deptno NOT

IN (SELECT

deptno FROM emp WHERE deptno = 30);

含义是找到和30号部门员工的任何一个人工资相同的那些员工。

最后一个关键字all的用法就是要与子查询的每一结果都要匹配。

SELECT ename,sal

FROM emp

WHERE sal > ALL(select sal

from emp where deptno = 20);

上面的SQL语句的意义与前面的就完全不一样了,其意义是找到比部门号为20的员

工的所有员工的工资都要高的员工,也就是比那个工资最高的员工的还要高的员工。

总的来说some和any用法意义是一样的,仅在词法上有不同,都表示对子查询结果

集“或”的比较关系,而all则是对子查询结果集总每一个结果“与”的关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值