mysql子查询(嵌套子查询和相关子查询的区别)

您所在的位置:网站首页 持仓查询和申请查询一样吗知乎 mysql子查询(嵌套子查询和相关子查询的区别)

mysql子查询(嵌套子查询和相关子查询的区别)

2024-07-04 18:14| 来源: 网络整理| 查看: 265

1 子查询分类

子查询可以分为 嵌套子查询 和 相关子查询 两类

1.1 嵌套子查询 1.1.1 执行顺序(由内至外)

(1)执行子查询道,其结果不被显示,而是传递给外部查询,作为外部查询的条件使用。 (2)执行外部查询,并显示整个结果。

1.1.2 实例说明

查询商品id为TNT2的订单号。

SELECT order_num FROM orders WHERE order_num IN ( SELECT order_num FROM orderitems WHERE prod_id = 'TNT2' ) 上面的查询分为两步:

(1)子查询

SELECT order_num FROM orderitems WHERE prod_id = 'TNT2'

(2)外部查询

SELECT order_num FROM orders WHERE order_num IN (20005, 20007) 1.2 相关子查询 1.2.1 执行顺序(由外至内)

(1)从外层查询中取出一个元组,将元组相关列的值传给内层查询。 (2)执行内层查询,得到子查询操作的值。 (3)外查询根据子查询返回的结果或结果集得到满足条件的行。 (4)然后外层查询取出下一个元组重答复做步骤1-3,直到外层的元组全部处理完毕。  

1.1.2 实例说明

查询客户的订单总数

SELECT cust_name, cust_state, ( SELECT COUNT(*) FROM orders o WHERE o.cust_id = c.cust_id ) AS orders FROM customers c GROUP BY cust_name; 上面的查询分为两步:

(1)外部查询

SELECT cust_name, cust_state, cust_id FROM customers GROUP BY cust_name;

(2)子查询

SELECT COUNT(*) FROM orders o WHERE o.cust_id = c.cust_id



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3