子查询是一个嵌套在SELECT、INSERT、UPDATE 或DELETE语句,或者另一个子查询里的查询。本文选自《OCA Oracle Database 11g: SQL Fundamentals I Exam Guide》,本文将对在查询中哪些地方可以使用子查询和哪些子句是必须的以及哪些又是可以选择的进行阐述。阅读本文,以便更好的了解子查询的定义。 下面是单行和多行子查询的例子。
它们是基于演示的HR Schema编写的。你要怎么找到那些经理办公地点在United Kingdom的员工呢?这个查询需求可以用多行子查询实现: select last_name from&……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号

TechTarget
官方微博

TechTarget中国
子查询是一个嵌套在SELECT、INSERT、UPDATE 或DELETE语句,或者另一个子查询里的查询。本文选自《OCA Oracle Database 11g: SQL Fundamentals I Exam Guide》,本文将对在查询中哪些地方可以使用子查询和哪些子句是必须的以及哪些又是可以选择的进行阐述。阅读本文,以便更好的了解子查询的定义。
下面是单行和多行子查询的例子。它们是基于演示的HR Schema编写的。你要怎么找到那些经理办公地点在United Kingdom的员工呢?这个查询需求可以用多行子查询实现:
select last_name from employees where manager_id in (select employee_id from employees where department_id in (select department_id from departments where location_id in (select location_id from locations where country_id='UK'))); |
前面的查询例子内嵌了3级子查询。我们注意到这些子查询使用了IN操作符,因为它对应的子查询可能返回多行数据。
如果你要查找平均薪水最高的工作,可以通过一个单行子查询来实现:
select job_title from jobs natural join employees group by job_title having avg(salary) = (select max(avg(salary)) from employees group by job_id); |
这个子查询返回单个值:各部门中的最高平均薪水值。这里是可以使用“=”操作符的,因为MAX方法保证了只返回一个值。
这里也可以使用ANY和ALL操作符,但它们的功能可以被其他一些常用的使用聚集的操作符所替代。比如,下面这两个语句,在部门的80位员工中,薪水比其他人高的将被返回,最后得出的是一个均等的结果集。
select last_name from employees where salary > all (select salary from employees where department_id=80); select last_name from employees where salary > (select max(salary) from employees where department_id=80); |
下表总结了ANY和ALL的用法:
Operator | Meaning |
< ANY | less than the highest 小于最大值 |
> ANY | not equal to any member in a list 不等于列表中任一个值 |
ANY | more than the lowest 大于最小值 |
= ANY | equivalent to IN 与IN相同 |
> ALL | more than the highest 大于最大值 |
< ALL | less than the lowest 小于最小值 |
翻译
TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。
相关推荐
-
控制合约 不再畏惧Oracle
许多公司都与Oracle有无限制授权协议,他们害怕离开这个协议,所以就证明他们在使用Oracle的软件,即使因为需求单独购买部分授权许可也可能总体是省钱的。
-
如何应对Oracle EBS实施中的六个挑战?
在18个月的时间里,Vitamix启动运行了Oracle电子商务套件(E-Business Suite,EBS),而且Vitamix还对诸如Oracle ATG Web Commerce等所有页面属性进行了重新整理,并实现了全球数据中心。
-
Oracle的云产品“砸了自己脚”?
Sparc和Solaris都是Oracle云计划的一部分,但是硬件和支持人员的减少意味着本地Solaris和Sparc将变得更加稀少。
-
2017年3月数据库流行度排行榜 Oracle卫冕之路困难重重
时隔一个月,数据库市场经过一轮“洗牌”,旧的市场格局是否会被打破,曾经占巨大市场份额的企业是否可能失去优势?