MySQL:子查询

之前介绍的都是简单查询,MySQL还支持子查询,常见的子查询用法有在where子句IN操作符中使用和计算字段中使用,下面分别举例说明。

用到的表参考https://www.cnblogs.com/july23333/p/11763375.html

1、where子句中

例:列出订购物品TNT2的所有客户信息

客户表中存有客户信息,订单表中存有订单号和客户ID,购买物品存在订单商品表中。我们从内至外依此写出查询语句在嵌套进外一层。

购买TNT2的订单号:

SELECT order_num FROM orderitems WHERE prod_id='TNT2'; 假定结果为20005和20007

查询订单号为20005和20007的客户ID:

SELECT cust_id FROM orders WHERE order_num IN (20005,20007);假定结果为10001和10004

查询客户id为10001和10004的客户信息

SELECT cust_id,cust_name,cust_contact FROM customers WHERE cust_id IN(10001,10004);

那么子查询的写法为:

SELECT cust_id,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='TNT2' 

                  )        

        )

2、计算字段中

例2:查询每个客户的订单总数

SELECT cust_id,cust_name,cust_contact,

    (SELECT COUNT(*)

    FROM orders

    WHERE orders.cust_id=customers.cust_id)

FROM customers ORDER BY cust_name

猜你喜欢

转载自www.cnblogs.com/july23333/p/11763882.html
今日推荐