SQL基础一考试指南:编写单行或多行子查询(一)

日期: 2008-12-08 作者:John WatsonRoopesh Ramklass翻译:曾少宁 来源:TechTarget中国 英文

子查询是一个嵌套在SELECT、INSERT、UPDATE 或DELETE语句,或者另一个子查询里的查询。本文选自《OCA Oracle Database 11g: SQL Fundamentals I Exam Guide》,本文将对在查询中哪些地方可以使用子查询和哪些子句是必须的以及哪些又是可以选择的进行阐述。阅读本文,以便更好的了解子查询的定义。   下面是单行和多行子查询的例子。

它们是基于演示的HR Schema编写的。你要怎么找到那些经理办公地点在United Kingdom的员工呢?这个查询需求可以用多行子查询实现: select last_name from&……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

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的能源管理》等。

相关推荐