子查询

什么是子查询?
可以把一条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) **
涉及外部查询的子查询。
这种类型的子查询称为相关子查询。任何时候只要列名可能有多义

posted @ 2020-09-24 15:51  bibicode  阅读(127)  评论(0)    收藏  举报