【MySQL必知必会(十一)】【使用子查询】

上一篇:【MySQL必知必会(十)】【分组数据】

+++++++++++++开始线++++++++++++++++

一、 子查询

查询

任何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);

在这里插入图片描述

列匹配

扫描二维码关注公众号,回复: 11843171 查看本文章

在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;

在这里插入图片描述

+++++++++++++结束线++++++++++++++++

下一篇:【MySQL必知必会(十二)】【联结表】

猜你喜欢

转载自blog.csdn.net/qq_42893334/article/details/108813873