MySQL:子查询

Posted july23333

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于MySQL:子查询的主要内容,如果未能解决你的问题,请参考以下文章

那个mysql 子查询和连接查询 一般常用哪个 谁效率高些

MySQL—— 子查询

带你学MySQL系列 | 今天我们说说MySQL“子查询”!

MySQL------ 子查询

MySQL------ 子查询

MySQL随记 - 子查询