1 子查询是什么?
嵌套在其他查询中的查询。
举例:
前提:orders表存储订单信息,orderitems存储订单中物品的信息,customers表存储客户信息。
step1:检索包含物品TNT2的所有订单的编号
select order_num from orderitems where prod_id ='TNT2';
step2:检索具有前一步骤订单编号的所有客户ID
select cust_id from orders where order_num IN (select order_num from orderitems where prod_id ='TNT2')
由上可以看出:一次查询的结果作为另一次查询的判定条件。子查询总是由内向外。
注意事项:在使用子查询的时候,列必须匹配:应该保证select语句具有与where子句中相同数目的列。通常情况下,子查询返回单个列并与单个列匹配,如果需要也可以使用多个列。
子查询一般与IN操作符结合使用,也可以用于测试等于、不等于。
2 作为计算字段使用子查询
举例:前提:同上三张表
①customers表:描述客户信息
②orderitems表:描述商品信息