MySQL入门学习-聚合和分组.子查询.相关子查询

        在 MySQL 中,子查询是指在一个查询语句中嵌套另一个查询语句。子查询可以分为相关子查询和非相关子查询两种类型。

        相关子查询是指子查询的执行结果依赖于外部查询中的值。在执行相关子查询时,MySQL 会先执行外部查询,然后根据外部查询的结果来执行子查询。

一、相关子查询的特点是:

- 子查询的执行结果依赖于外部查询中的值。

- 子查询的执行顺序是先执行外部查询,然后根据外部查询的结果来执行子查询。

- 相关子查询的执行效率较低,因为它需要多次执行子查询。

二、相关子查询的使用方法是:

- 在子查询中使用外部查询中的值。

- 在子查询中使用外部查询中的表。

- 在子查询中使用外部查询中的列。

三、相关子查询的高级应用包括:

- 利用相关子查询实现多表关联。

- 利用相关子查询实现动态查询。

- 利用相关子查询实现数据过滤。

四、以下是生成的 MySQL 相关子查询的示例代码:

-- 创建表

CREATE TABLE products (

    id INT PRIMARY KEY AUTO_INCREMENT,

    name VARCHAR(50),

    category_id INT,

    price DECIMAL(10, 2)

);



-- 插入数据

INSERT INTO products (name, category_id, price)

VALUES ('Product 1', 1, 10.00),

       ('Product 2', 1, 20.00),

       ('Product 3', 2, 30.00),

       ('Product 4', 2, 40.00),

       ('Product 5', 3, 50.00);



-- 示例 1:使用子查询计算每个分类的平均价格

SELECT category_id, AVG(price) AS average_price

FROM products

GROUP BY category_id;



-- 示例 2:使用相关子查询查找每个分类中价格高于平均价格的产品

SELECT *

FROM products p1

WHERE price > (

    SELECT AVG(price)

    FROM products p2

    WHERE p1.category_id = p2.category_id

);



-- 示例 3:使用子查询计算每个分类的产品数量

SELECT category_id, (

    SELECT COUNT(*)

    FROM products p2

    WHERE p1.category_id = p2.category_id

) AS product_count

FROM products p1

GROUP BY category_id;

        在上述示例中,我们创建了一个名为 'products' 的表,并插入了一些示例数据。然后,我们使用子查询和相关子查询来执行各种聚合和分组操作。

        示例 1 中,我们使用子查询计算每个分类的平均价格,并将结果与产品表进行连接,以获取每个分类的产品信息。

        示例 2 中,我们使用相关子查询查找每个分类中价格高于平均价格的产品。相关子查询是指子查询中引用了外部查询中的表或列,因此子查询的执行结果会受到外部查询的影响。在这个例子中,我们使用相关子查询来计算每个分类的平均价格,并将结果与产品表进行比较,以获取价格高于平均价格的产品信息。

        示例 3 中,我们使用子查询计算每个分类的产品数量,并将结果与产品表进行连接,以获取每个分类的产品信息。

(文章为作者在学习MySQL过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

相关推荐

  1. MySQL入门学习-聚合分组.查询.相关查询

    2024-06-14 11:56:01       33 阅读
  2. MySQL入门学习-查询.ANY

    2024-06-14 11:56:01       29 阅读
  3. MySQL入门学习-查询.ALL

    2024-06-14 11:56:01       30 阅读
  4. 11. Mysql 查询

    2024-06-14 11:56:01       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-14 11:56:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-14 11:56:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-14 11:56:01       82 阅读
  4. Python语言-面向对象

    2024-06-14 11:56:01       91 阅读

热门阅读

  1. 设计模式之策略模式

    2024-06-14 11:56:01       23 阅读
  2. Ubuntu16-18网卡配置

    2024-06-14 11:56:01       30 阅读
  3. 使用ffmpeg进行音频处理

    2024-06-14 11:56:01       27 阅读
  4. React native新架构组成

    2024-06-14 11:56:01       25 阅读
  5. hive split 特殊用法

    2024-06-14 11:56:01       28 阅读
  6. k8s 证书更新

    2024-06-14 11:56:01       32 阅读
  7. Cesium4Unreal - # 009 直接加载显示shapefile

    2024-06-14 11:56:01       35 阅读
  8. 对iOS开发中的链接器ld64和-ld_classic的深入理解

    2024-06-14 11:56:01       39 阅读
  9. 策略模式(设计模式)

    2024-06-14 11:56:01       28 阅读
  10. apex触发器满足条件时弹出对话框

    2024-06-14 11:56:01       30 阅读