子查询
MySQL 4.1引入了对子查询的支持。子查询(subquery)是嵌套在其他查询中的查询。
利用子查询进行过滤
列出订购物品TNT2的所有客户,步骤如下
- 检索包含物品TNT2的所有订单的编号。
- 检索具有前一步骤列出的订单编号的所有客户的ID。
- 检索前一步骤返回的所有客户ID的客户信息。
可以把以上每个步骤单独查询,上一条语句返回的记过用于下一条语句的筛选条件
1 | SELECT order_num |
1 | SELECT cust_id |
1 | SELECT cust_name, cust_contact |
用子查询组合以上SQL
1 | SELECT cust_name, cust_contact |
在WHERE子句中使用子查询(如这里所示),应该保证SELECT语句具有与WHERE子句中相同数目的列。通常,
子查询将返回单个列并且与单个列匹配。
作为计算字段使用子查询
显示customers表中每个客户的订单总数,步骤如下:
- 从customers表中检索客户列表。
- 对于检索出的每个客户,统计其在orders表中的订单数目。
1 | SELECT cust_name, |