子查询

查询(query) 任何SQL语句都是查询。但此术语一般指SELECT 语句。
SQL还允许创建子查询(subquery)。

利用子查询进行过滤

现在,假如需要列出订购物品TNT2的所有客户,应该怎样检索?
下面列出具体的步骤。
(1) 检索包含物品TNT2的所有订单的编号。
(2) 检索具有前一步骤列出的订单编号的所有客户的ID。
(3) 检索前一步骤返回的所有客户ID的客户信息。
image.png
image.png
image.png
image.png
image.png
image.png

作为计算字段使用子查询

使用子查询的另一方法是创建计算字段。
假如需要显示customers表中每个客户的订单总数。订单与相应的客户ID存储在orders表中。
为了执行这个操作,遵循下面的步骤。
(1) 从customers表中检索客户列表。
(2) 对于检索出的每个客户,统计其在orders表中的订单数目。
image.png
image.png
相关子查询(correlated subquery) 涉及外部查询的子查询。
这种类型的子查询称为相关子查询。任何时候只要列名可能有多义性,就必须使用这种语法(表名和列名由一个句点分隔)。
image.png