子查询
什么是子查询?
可以把一条SELECT语句返回的结果用于另一条SELECT语句的WHERE子句就是子查询
例子:
SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE prod_id='TNT2');
在SELECT语句中,子查询总是从内向处理
首先,它执行下面的查询:
SELECT order_num FROM orderitems WHERE prod_id='TNT2'
此查询返回两个订单号:20005和20007。然后,这两个值以IN操作符要
求的逗号分隔的格式传递给外部查询的WHERE子句。外部查询变成:
SELECT cust_id FROM orders WHERE order_num IN (20005, 20007);
可以看到,输出是正确的并且与前面硬编码WHERE子句所返回的值相同。
作为计算字段使用子查询
SELECT cust_name, cust_state, (SELECT COUNT(*) FROM orders WHERE orders.cust_id = customers.cust_id)AS orders FROM customers ORDER BY cust_name;
**相关子查询(correlated subquery) **
涉及外部查询的子查询。
这种类型的子查询称为相关子查询。任何时候只要列名可能有多义
性

浙公网安备 33010602011771号