oracle:子查询

devtools/2025/2/2 19:07:50/

子查询: 一条查询语句中嵌入了另一条查询语句, 被嵌入里面的这条查询语句称为子查询, 外面的查询语句称为主查询

子查询的分类

 

 

 相关性子查询(Correlated Subquery)是指子查询的执行依赖于外部查询的每一行数据。也就是说,子查询会对外部查询的每一行进行一次计算,通常通过外部查询的字段与子查询的字段进行关联

标量子查询(Scalar Subquery) 是 SQL 中的一种子查询,它返回 单个值(即一行一列的结果)。标量子查询可以嵌套在 SQL 语句的各个部分中,例如 SELECTWHEREHAVINGORDER BY 等,因为它返回的是一个确定的值,而不是一个集合

示例

示例1: 充当字段/相关性子查询

查询每个客户的订单总金额

子查询 (SELECT SUM(total_amount) FROM orders WHERE orders.customer_id = customers.customer_id) 被用来计算每个客户的订单总金额,并将其作为 total_spent 字段返回。子查询中的WHERE orders.customer_id = customers.customer_id 用于将 orders 表和 customers 表中的相关记录连接起来。这个条件确保了子查询计算的是与每个客户相关的订单总金额。如果不写这个条件,子查询将计算 orders 表中所有订单的总金额

相关性子查询:

子查询 (SELECT SUM(total_amount) FROM orders WHERE orders.customer_id = customers.customer_id) 依赖于外部查询中的 customers.customer_id。对于外部查询中的每一行,子查询都会根据当前的 customer_id 来计算该客户的总订单金额。

示例2: 充当表/非相关性子查询

子查询作为表使用时,它通常用于创建一个临时表,这个临时表可以与其他表进行连接

属于非相关性子查询

  • 这两个子查询都是 独立的,它们的执行不依赖于外部查询的任何字段。

  • 子查询的结果在连接操作之前就已经确定,不会为外部查询的每一行重新计算。

对比相关性子查询

这里子查询 (SELECT aid FROM areas a2 WHERE a2.pid = a1.aid) 引用了外部查询的字段 a1.aid,因此是相关性子查询

示例3:充当表/非相关性子查询

 

示例4 : 充当条件/非相关性子查询

 

子查询的结果在外部查询执行之前就已经确定,不会为外部查询的每一行重新计算,属于非相关性子查询

示例:充当字段

exists子查询和in子查询

用于在外部查询中过滤记录,基于子查询中是否存在满足条件的行。EXISTS 子查询返回一个布尔值(TRUE 或 FALSE),如果子查询返回至少一行,则结果为 TRUE,否则为 FALSE

语法: 

示例 

 

 

 exists和 not exists

  

sql优化

 

子查询属于单表查询还是多表查询

子查询是一个嵌套在另一个查询中的查询,它可以独立于外部查询使用单表,也可以涉及多个表。

 


http://www.ppmy.cn/devtools/155515.html

相关文章

AI开发之 ——Anaconda 介绍

Anaconda 是什么? 在这里插入图片描述 一句话:Anaconda 是Python 库和环境便捷管理的平台。 Anaconda 是数据科学和 AI 领域的工具,通过集成常用库和工具,简化了环境管理和包安装,特别适合初学者和需要快速上手的开…

为什么要用tauri开发跨平台桌面

1、跨平台:tauri目前能跑PC和移动端,支持windows,macos,linux,android,ios。 2、体积小:electron打包非常大,特别是在macos中打包,大得可怕。我在macos中打包了一个electron项目,占600MB,改成t…

设计转换Apache Hive的HQL语句为Snowflake SQL语句的Python程序方法

首先,根据以下各类HQL语句的基本实例和官方文档记录的这些命令语句各种参数设置,得到各种HQL语句的完整实例,然后在Snowflake的官方文档找到它们对应的Snowflake SQL语句,建立起对应的关系表。在这个过程中要注意HQL语句和Snowfla…

【PyTorch】5.张量索引操作

目录 1. 简单行、列索引 2. 列表索引 3. 范围索引 4. 布尔索引 5. 多维索引 个人主页:Icomi 在深度学习蓬勃发展的当下,PyTorch 是不可或缺的工具。它作为强大的深度学习框架,为构建和训练神经网络提供了高效且灵活的平台。神经网络作为…

目标检测与语义分割

目标检测 图片分类问题是判断图片中是否存在特定的对象。 图片定位分类问题除了判断图片是否包含特定对象外,还要定位对象在图像中的位置,并使用**边界框(bounding box)**标记出该位置。 边界框的四个参数为 b x b_{x} bx​&#…

JavaScript原型链与继承:优化与扩展的深度探索

在 JavaScript 的世界里,万物皆对象,而每个对象都有一个与之关联的原型对象,这就构成了原型链的基础。原型链,简单来说,是一个由对象的原型相互连接形成的链式结构 。每个对象都有一个内部属性[[Prototype]]&#xff0…

【前端】Electron入门开发教程,从介绍Electron到基础引用以及部分深度使用,附带常见的十个报错问题的解决方案和代码优化。

Electron 是一个使用 JavaScript、HTML 和 CSS 等 Web 技术创建跨平台桌面应用程序的框架。它结合了 Chromium 渲染引擎和 Node.js 运行时,允许开发者构建高质量的桌面应用。下面是一个简要的 Electron 开发教程,从基础到深入,并包括一些常见…

物联网智能项目之——智能家居项目的实现!

成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于物联网智能项目之——智能家居项目…