美文网首页
MySQL之子查询

MySQL之子查询

作者: wenmingxing | 来源:发表于2018-06-04 22:02 被阅读12次

本文主要介绍MySQL中的子查询,及如何使用它。

I、利用子查询进行过滤

假设我们有三个tables:
1、orders表存储订单号,客户ID,订单日期;


2、各个订单的物品存储在orderitems表中;

3、用户信息存储在customers表中;

现在我们要实现一个列出订购物品TNT2的所有用户信息

1、首先我们需要从orderitems表中得到TNT2的订单编号order_num:

> SELECT order_num FROM orderitems WHERE prod_id = 'TNT2';

2、再从order中查找这些订单的客户ID(cust_id):

> SELECT cust_id FROM orders WHERE order_num IN (20005, 20007);

3、最后在表customers中得到这些客户的信息:

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

而如果应用子查询,可以将以上三个步骤缩减为一条语句:

> 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'));

可见,子查询一般使用WHERE子句的IN操作符,完成查询。

II、子查询作为计算字段

使用子查询的另一种方法是创建计算字段,假如,我们需要显示customers表中每个客户的订单总数。为了完成这个操作,需要进行下面的步骤:

1、从customers表中检索客户列表;
2、对于检索出的每个客户,统计出其在orders表中的订单数目。

可以采用子查询完成这个工作:

> SELECT cust_name, cust_state, 
        (SELECT COUNT(*) FROM orders WHERE orders.cust_id = customers.cust_id) AS nums FROM customers;  

上面的语句中所生成的nums列即为子查询所创建的计算字段,输出结果如下:

III、例题

牛客网SQL子查询例题1

【参考】
[1] 《MySQL必知必会》

相关文章

  • MySQL之子查询

    本文主要介绍MySQL中的子查询,及如何使用它。 I、利用子查询进行过滤 假设我们有三个tables:1、orde...

  • Mysql之子查询

    一、子查询使用场景 --select... -- --from --where<可使用子查询> --having<...

  • MySQL多表之子查询

    子查询是指一个查询语句嵌套在另一个查询语句内部的查询。 它可以嵌套在一个SELECT || SELECT.......

  • MySQL(九)DQL之子查询

    一、含义 嵌套在其他语句内部的select语句称为子查询或内查询,外面的语句可以是insert、update、de...

  • MySQL | 数据查询语言之子查询

    子查询 分治思想. 复杂的查询分解为若干个简单的查询 ▲ 子查询的引入 #找出商店售价比 诺基亚E66 要贵的产品...

  • MySQL数据库之子查询与合并查询

    温馨提示:本文阅读需要5分钟,建议收藏后阅读! 各位宝宝们 我们今天一起来了解 MySQL数据库的子查询与合并查询...

  • 2018-03-20

    MYSQL查询语句 MYSQL复杂操作语句 MYSQL多表查询方法 函数部分

  • 高性能的索引策略

    MySQL查询基础-查询执行过程 MySQL聚簇索引 MySQL覆盖索引 MySQL索引扫描排序 MySQL冗余和...

  • MySQL学习——查询缓存

    MySQL查询缓存简介 MySQL查询缓存是MySQL将查询返回的完整结果保存在缓存中。当查询命中该缓存,MySQ...

  • MySQL学习-数据查询语言(DQL)五之子查询

    八丶子查询 1)含义:出现在其他语句中的select语句,称为子查询或内查询外部的查询语句,称为主查询或外查询 2...

网友评论

      本文标题:MySQL之子查询

      本文链接:https://www.haomeiwen.com/subject/roqusftx.html