美文网首页
关联子查询

关联子查询

作者: susupp | 来源:发表于2018-07-23 16:09 被阅读0次

关联子查询会在细分的组内进行比较时使用。
关联子查询和GROUP BY子句一样,也可以对表中的数据进行切分。
关联子查询的结合条件如果未出现在子查询之中就会发生错误。

按照商品种类和该种类的平均单价进行比较
SELECT
    product_type,
    product_name,
    sale_price
FROM
    product AS p1
WHERE
    sale_price > (
        SELECT
            AVG(sale_price)
        FROM
            product AS p2
        WHERE
            p1.product_type = p2.product_type 
        /* 这里的GROUP BY也可以不要
        因为在WHERE字句中有了product_type相等的条件
        使得AVG函数按照商品种类进行了平均值计算
        */
        GROUP BY
            product_type
    );
关联子查询也是用来对集合进行切分的

其实关联子查询和GROUP BY一样,可以对结合进行切分。


内部执行情况

对于初学者,关联子查询可能比较难理解,但记住这种分组效应,就好理解很多。结合上图去看一下DBMS到底是怎么来执行关联子查询的。

关联子查询和GROUP BY都可以进行分组,但在应用场景上,也有明显的不同。有GROUP BY的SELECT字句中,只能选择被GROUP BY的列,也就是分组列或者聚合函数操作的结果;但是关联子查询则相当于进行一次GROUP BY再JOIN回去一样的。在有关联子查询的query里,SELECT的列是不受限制的。这一点可以在练习题5.4中看的更清楚。关联子查询的分组,只是将分组查询出来的信息作为新列加上去,不对分组内容进行聚合。

SELECT
    product_id,
    product_name,
    product_type,
    sale_Price,
    (
        SELECT
            avg(sale_price)
        FROM
            product AS p2
        WHERE
            p1.product_type = p2.product_type
    ) AS avg_sale_price
FROM
    product AS p1;
执行结果

相关文章

  • SQL必知必会(子查询)

    一、什么是关联子查询,什么是非关联子查询 子查询虽然是一种嵌套查询的形式,不过我们依然可以依据子查询是否执行多次,...

  • 数据库笔记-SQL子查询

    子查询:关联查询和非关联查询 子查询是「查询」中的「查询」,就是「嵌套查询」。 以 NBA 的SQL数据库文件为例...

  • 关联子查询和非关联子查询

    对于exist和in,大家的一致看法如下:1.in是子查询为驱动表,外面的表为被驱动表,故适用于子查询结果集小而外...

  • 一文详解 SQL 关联子查询

    本文主要介绍什么是关联子查询以及如何将关联子查询改写为普通语义的sql查询。 在背景介绍中我们将讲讲常见的关联子查...

  • SQL关联子查询

    简单易懂教你学会SQL关联子查询 初学SQL的人都会觉得SQL的关联子查询难以理解,为什么?这是有原因的。 关联子...

  • 关联子查询

    关联子查询会在细分的组内进行比较时使用。关联子查询和GROUP BY子句一样,也可以对表中的数据进行切分。关联子查...

  • 06 子查询

    目录链接:https://www.jianshu.com/p/2c104aaadb03 关联子查询与非关联子查询 ...

  • 第六章 查询性能优化(下)

    MySQL查询优化器的局限性 关联子查询 MySQL的关联子查询实现的很差,最好改成左外连接(LEFT OUTER...

  • MySQL 子查询

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

  • 速度问题

    sql里的关联子查询和交叉联接都是比较浪费时间的。 非关联子查询(Noncorrelated subquery) ...

网友评论

      本文标题:关联子查询

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