使用子查询
子查询总是从内向外处理。作为子查询的SELECT语句只能查询个列,企图检索多个列将返回错误。
```SQL SERVER
SELECT order_num FROM OrderItems WHERE prod_id='RGAN01';
SELECT cust_id FROM Orders WHERE order_num IN (20007,20008);
SELECT cust_name,cust_contact FROM Customers WHERE cust_id IN (1000000004,1000000005);
--三个SQL语句合一:
SELECT cust_name,cust_contact FROM Customers WHERE cust_id IN (
SELECT cust_id FROM Orders WHERE order_num IN (
SELECT order_num FROM OrderItems WHERE prod_id='RGAN01'
)
);
>子查询中的结果,以IN操作符的要求的逗号分隔的格式传递给外部查询的WHERE子句中。
子查询中没有分号。
>**完全限定列名**:用一个逗号分隔表明和列名,去除混淆影响。
```sql server
SELECT cust_name,cust_state,(
SELECT COUNT(*) FROM Orders WHERE orders.cust_id=Customers.cust_id
) AS orders FROM Customers ORDER BY cust_name;