MySQL必知必会笔记(十一):使用子查询

利用子查询进行过滤

首先来看一看需求:列出订购物品TNT2的所有客户。
但是订单号、客户ID、订单日期储存于orders表中;orders表不储存客户信息,它只储存客户的ID,实际的客户信息储存在customers表中。
orders表:
在这里插入图片描述
orderitems表:
在这里插入图片描述
customers表:
在这里插入图片描述
检索具体步骤为:
(1)从orderitems表中检索包含物品TNT2的所有订单的编号;
(2)从orders表中检索具有前一步骤列出的订单编号的所有客户的ID;
(3)从customers检索前一步骤返回的所有客户ID的客户信息。

1、第一步:
输入
SELECT order_num FROM orderitems WHERE prod_id = 'TNT2';
输出
在这里插入图片描述
2、第二步
输入
SELECT cust_id FROM orders WHERE order_num IN (20005,20007);
输出
在这里插入图片描述
3、现在,把第一个查询变为子查询:
输入
SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE prod_id = 'TNT2');
输出
在这里插入图片描述

4、
输入
SELECT 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'));
输出
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值