📜  SQL | From 子句中的子查询

📅  最后修改于: 2022-05-13 01:55:31.302000             🧑  作者: Mango

SQL | From 子句中的子查询

From 子句可用于指定 SQL 中的子查询表达式。子查询产生的关系然后用作应用外部查询的新关系。

  • 大多数 SQL 实现都支持 from 子句中的子查询。
  • from 子句中关系的相关变量不能用于 from 子句中的子查询。

语法

SELECT column1, column2 FROM 
(SELECT column_x  as C1, column_y FROM table WHERE PREDICATE_X)
as table2, table1
WHERE PREDICATE;

注意 from 子句中的子查询首先被评估,然后评估结果存储在一个新的临时关系中。
接下来,评估外部查询,仅从临时关系中选择满足外部查询 where 子句中谓词的元组。

询问

例 1找出所有薪水大于所有系平均预算的教授。

导师关系:

InstructorIDNameDepartmentSalary
44547SmithComputer Science95000
44541BillElectrical55000
47778SamHumanities44000
48147ErikMechanical80000
411547MelisaInformation Technology65000
48898JenaCivil50000

部门关系:

Department NameBudget
Computer Science100000
Electrical80000
Humanities50000
Mechanical40000
Information Technology90000
Civil60000

查询

select I.ID, I.NAME, I.DEPARTMENT, I.SALARY from
(select avg(BUDGET) as averageBudget from DEPARTMENT) as BUDGET, Instructor as I
where I.SALARY > BUDGET.averageBudget;

输出

InstructorIDNameDepartmentSalary
44547SmithComputer Science95000
48147ErikMechanical80000

解释部门关系中所有部门的平均预算为 70000。Erik 和 Smith 是讲师关系中仅有的薪水超过 70000 的讲师,因此存在于输出关系中。