+++++++++++++开始线++++++++++++++++
一、 子查询
查询
任何SQL语句都是查询。但此术语一般指SELECT语句
二、 利用子查询进行过滤
列出订购物品TNT2的所有客户
1.检索包含物品TNT2的所有订单的编号
2.检索具有前一步列出的订单编号的所有客户的ID
3.检索前一步返回的所有客户ID的客户信息
mysql> SELECT cust_id
-> FROM orders
-> WHERE order_num IN (SELECT order_num
-> FROM orderitems
-> WHERE prod_id = 'TNT2');
现在得到订购TNT2的所有客户的ID,下一步是检索这些客户ID的客户信息
mysql> SELECT cust_name, cust_contact
-> FROM customers
-> WHERE cust_id IN (10001,10004);
列匹配
在WHERE子句中使用子查询,应该保证SELECT语句具有与WHERE子句中相同数目的列。通常,子查询将返回单个列并且与单个列匹配,如果需要可以使用多个列。
三、 作为计算字段使用子查询
对客户10001的订单进行计数
mysql> SELECT COUNT(*) AS orders
-> FROM orders
-> WHERE cust_id = 10001;
对每个客户执行COUNT(*)计算
mysql> SELECT cust_name,
-> cust_state,
-> (SELECT COUNT(*)
-> FROM orders
-> WHERE orders.cust_id = customers.cust_id) AS orders
-> FROM customers
-> ORDER BY cust_name;
+++++++++++++结束线++++++++++++++++