使用子查询

11.2 利用子查询进行过滤

SELECT cust_name, cust_contact FROM Customers WHERE cust_id IN (SELECT cust_id FROM Order WHERE order_num IN (SELECT order_num FROM OrderItems WHERE prod_id = 'RGAN01'));

11.3  作为计算字段使用子查询使用子查询的另一方法是创建计算字段。假如需要显示Customers表中每个顾客的订单总数。订单与相应的顾客ID存储在Orders表中。

执行这个操作,要遵循下面的步骤:  


从Customers表中检索顾客列表;
对于检索出的每个顾客,统计其在Orders表中的订单数目。


正如前两课所述,可以使用SELECT COUNT(*)对表中的行进行计数,并且通过提供一条WHERE子句来过滤某个特定的顾客ID,仅对该顾客的订单进行计数。例如,下面的代码对顾客1000000001的订单进行计数:  

输入▼

SELECT COUNT(*) AS orders
FROM Orders
WHERE cust_id = '1000000001';


要对每个顾客执行COUNT(*),应该将它作为一个子查询。请看下面的代码:  

输入▼

SELECT cust_name,
       cust_state,
       (SELECT COUNT(*)
        FROM Orders
        WHERE Orders.cust_id = Customers.cust_id) AS orders
FROM Customers
ORDER BY cust_name;

原文地址:https://www.cnblogs.com/qook/p/4898049.html