时间:2021-07-01 10:21:17 帮助过:39人阅读
一、子查询回顾
子查询是嵌套在 SQL 语句中的另一个 SELECT 语句
例:
1、查询工资大于148号员工工资的员工信息(只能为单列查询,否则报错)
结果如下
2、查询 Last_name 为 grant 的 manager 的信息
结果如下
分析:
1)首先应该写出以下图中的内容
-- 查询 emloyee_id , manager_id , department_id
-- where 条件将 manager_id、department_id 限定
-- employee_id 不能为 149 或 176.
2)之后将 manager_id 和 department_id 的 sql 语句填上即可,当然此时最好将 "" 改为 in。
查询结果显示如下:
我们发现上述查询中有两个部分出现多次,于是我们应该通过多列子查询使得 sql 语句更加简洁。
成对比较方式:sql如下

-- 要注意的地方在于部门号要一致(本部门)
2、加上平均工资
通过加入一个 select 查询进行平均工资的查询,也要保证为本部门,查询结果如下
那和 from 子句使用子查询有何关系呢?其实 departments 是一个真实存在的表,然而在平均工资查询时,我们可以通过 sql 语句来建立一个表,然后建立 employees 与
该表的连接关系,即可降低 sql 语句的冗余度。sql 语句如下和结果如下:

可以发现这样的查询结果与之前的结果是一致的,但是冗余度大大降低,但是思路要清晰,难度较大。
employees 表中信息

-----------------------------------------------------------------------------------------------------
例:查询员工的 employee_id 和 last_name,要求按照员工的 department_name 排序
department_name 不存在于 employees 表中,
每次查询一个员工时,都会找到对应的 name ,然后跟已有排好序的 name 进行对比,如果靠前就往前排,靠后则往后排,故此连接条件必须存在。
版权声明:本文为博主原创文章,未经博主允许不得转载。
Oracle(四)--> 高级子查询(多例详解难度高,实在不信进来看~)
标签:子查询 单列子查询