度量快速开发平台-专业、快速的软件定制快开平台

标题: oracle some、any和all函数 [打印本页]

作者: 张兴康    时间: 2020-4-16 18:51
标题: oracle some、any和all函数
三者的区别:
Some在此表示满足其中一个的意义,是用or串起来的比较从句。
Any也表示满足其中一个的意义,也是用or串起来的比较从句,区别是any一般用在非“=”的比较关系中,这也很好理解,英文中的否定句中使用any肯定句中使用sone,这一点是一样的。
All则表示满足其其中所有的查询结果的含义,使用and串起来的比较从句。


下面通过几个实例来介绍它们

作者: 张兴康    时间: 2020-4-16 18:52
1、找出员工中,只要比部门号为10的员工中的任何一个员工的工资高的员工的姓名个工资。也就是说只要比部门号为10的员工中的那个工资最少的员工的工资高就满足条件。这种情况下就推荐使用any

select ename,sal
From emp
Where sal > any(select sal from emp where deptno = 10);

作者: 张兴康    时间: 2020-4-16 18:52
1、找出员工中,只要比部门号为10的员工中的任何一个员工的工资高的员工的姓名个工资。也就是说只要比部门号为10的员工中的那个工资最少的员工的工资高就满足条件。这种情况下就推荐使用any

select ename,sal
From emp
Where sal > any(select sal from emp where deptno = 10);

作者: 张兴康    时间: 2020-4-16 18:53
2、找到和30部门员工的任何一个人工资相同的那些员工;这时候就推荐使用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);
作者: 张兴康    时间: 2020-4-16 18:54
3、找到比部门号为20的员工的所有员工的工资都要高的员工;需要与子查询的每一结果都要匹配;所以推荐使用all
select ename,sal
From emp
Where sal > all(select sal from emp where deptno = 20);
作者: 陈晓龙    时间: 2020-4-16 19:42
张兴康 发表于 2015-11-16 18:52
1、找出员工中,只要比部门号为10的员工中的任何一个员工的工资高的员工的姓名个工资。也就是说只要比部门 ...

楼主不错嘛。oracle技术高深莫测!
作者: 张军勇    时间: 2020-4-17 09:39
能不能把内容一起发完?阅读起来方便。
作者: 王爱东    时间: 2020-4-17 16:47
内容是好内容。我还没用过。some,all,any这几个。
作者: 万望    时间: 2020-4-17 17:47
这个有点牛逼,还没用过
作者: 万望    时间: 2020-4-17 17:49
楼猪这是要火的节奏,前十必火{:soso_e754ab5619b5b6e3-8e27a81f8c2a4ef7-382385fbd6187da86172b9a382ecd0c0.jpg:}




欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) Powered by Discuz! X3.2