美文网首页
chapter14:使用子查询

chapter14:使用子查询

作者: WeirdoSu | 来源:发表于2017-12-19 21:25 被阅读0次

子查询

即嵌套在其他查询中的查询。

利用子查询进行过滤

例:

  1. 检索包含物品TNT2的所有订单的编号。
  2. 检索具有前一步骤列出的订单编号的所有客户的ID。
  3. 检索前一步骤返回的所有客户ID的客户信息。

把一条SELECT语句返回的结果用于另一条SELECT语句的WHERE子句。

第一步:

SELECT order_num
FROM orderitems
WHERE prod_id = 'TNT2';

第二步:查询具有订单20005和20007的客户ID。

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

现在,把第一个查询变为子查询组合两个查询:

SELECT cust_id
FROM orders
WHERE order_num IN (SELECT
                    FROM orderitems
                    WHERE prod_id = 'TNT2');

!:在SELECT语句中,子查询总是从内向外处理。

以上得到了订购物品TNT2的所有客户的ID。下一步是检索这些客户ID的客户信息:

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

将WHERE子句转换为子查询:

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

作为计算字段使用子查询

例:假如需要显示customers表中每个客户的订单总数。订单与相应客户ID存储在orders表中。步骤:

  1. 从customers表中检索客户列表。
  2. 对于检索出的每个客户,统计其在orders表中的订单数目。
SELECT cust_name,
       cust_state,
       (SELECT COUNT(*)
        FROM orders
        WHERE orders.cust_id = customers.custid) AS orders
FROM cusomers
ORDER BY cust_name;

相关子查询(correlatedsubquery):涉及外部查询的子查询。这种类型的子查询称为相关子查询。任何时候只要列名可能有多义性,就必须使用这种语法(表名和列名由一个句点分隔)。

相关文章

  • chapter14:使用子查询

    子查询 即嵌套在其他查询中的查询。 利用子查询进行过滤 例: 检索包含物品TNT2的所有订单的编号。 检索具有前一...

  • MySQL 子查询

    什么是子查询 为什么要使用子查询 子查询的分类 怎样使用子查询 关联子查询 要使用的数据表 1. 什么是子查询? ...

  • 《SQL必知必会》第 11 课 使用子查询

    目标: 11.1 子查询 11.2 利用子查询进行过滤 11.3 作为计算字段使用子查询 11.1 子查询 查询(...

  • Oracel_子查询

    SQL子查询 子查询语法 子查询 (内查询) 在主查询之前一次执行完成。 子查询的结果被主查询(外查询)使用 。 ...

  • Mysql之子查询

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

  • MySql(七)子查询与虚表

    一、子查询 子查询在主查询前执行一次 主查询使用子查询的结果 子查询要用括号括起来 将子查询放在比较运算符的右边 ...

  • 子查询

    嵌套在其他查询中的查询叫子查询 使用到 WHERE 子句中时,子查询必须用括号括起来。 子查询在 SELECT 子...

  • 《mysql必知必会》读书实战笔记14-子查询

    第14章 使用子查询 14.1子查询 简单查询:查询单个数据表的select查询语句。 子查询:嵌套在其他查询中的...

  • 5.2 子查询 连结

    子查询 嵌套在其它查询中的查询 子查询总是从内向外处理。 作为计算字段使用子查询。 Select name , s...

  • 使用子查询

    select order_num from orderitems where prod_id = 'tnt2'; ...

网友评论

      本文标题:chapter14:使用子查询

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