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:子查询的主要内容,如果未能解决你的问题,请参考以下文章