SQL---关联子查询(correlated subquery)

DB(五):关联查询、子查询、关联子查询、分页查询 包括关联查询内链接、外链接、自查询;子查询在SELECT、WHERE、FROM语句中使用,子查询的执行过程及注意事项;关联子查询EXISTS、NOT EXISTS的执行过程,IN和EXISTS的区别;分页查询。 阅读详情
AI摘要

本文介绍了Oracle的关联子查询。首先解释子查询是嵌套在主查询里的查询,子查询分为关联和非关联子查询,非关联子查询可独立执行,关联子查询与主查询有条件关联,不能独自执行。还说明了二者执行顺序不同,以及关联子查询的语法、用途和限制。

关联子查询和普通子查询的区别在于:

1,关联子查询引用了外部查询的列。

2,执行顺序不同。对于普通子查询,先执行普通子查询,再执行外层查询;而对于关联子查询,先执行外层查询,然后对所有通过过滤条件的记录执行内层查询。

语法:

SELECT column1, column2
FROM table1 AS outer
WHERE column1 operator
      (SELECT column1, column2
       FROM table2
       WHERE expr1 = outer.expr2);

在关联子查询中,对于外部查询返回的每一行数据,内部查询都要执行一次。另外,在关联子查询中是信息流是双向的,外部查询的每行数据传递一个值给子查询,然后子查询为每一行数据执行一次并返回它的记录。然后,外部查询根据返回的记录做出决策。

关联子查询的用途:

1,在细分的组内进行比较

例子:查询各个商品种类中高于该商品种类平均销售价格的商品信息

SELECT * 
FROM t_commodity AS t1
WHERE sell_unit_price > (
       SELECT AVG(sell_unit_price) 
       FROM t_commodity
       WHERE category = t1.category
)

2,和EXISTS或NOT EXISTS配合使用,查询存在或不存在的记录

例子:查询没有下过订单的所有顾客的信息

SELECT customer_id
FROM customers AS c
WHERE NOT EXISTS (
      SELECT customer_id
      FROM orders
      WHERE customer_id = c.customer_id
)

Oracle 的关联子查询(correlated subquery) 简介

相信 接触过 ocp考题既, 都会见到 correlated subquery的字眼.

correlated subquery的中文名称就是相关子查询呢?

1. 什么是子查询

这个很简单, 子查询就是嵌套在主查询里的查询了.

例如, 在scott 模式下我想查找所有比Allen 工资高的员工

我们可以写成这样:

select a.* from emp a, emp b
where a.sal > b.sal
and b.ename = 'ALLEN'

当然上面的查询语句自不过是简单的连接查询, 并没有用到子查询.

写成这样就是子查询了:

select * from emp 
where sal > ( select sal from emp where ename = 'ALLEN')

第二行where 条件中出现了另1个子查询. 反而令sql语句更加容易理解了.

2. 什么是非关联子查询

而子查询也可以分成关联子查询和非关联子查询, 上面那条sql 语句就是非关联子查询.

所谓非关联子查询就是 指子查询可以脱离主查询独立执行.

再举个例子:

我想找出每个部门中最高工资的人.

sql语句可以写成如下:

select a.deptno,a.* from emp a
where (a.deptno, a.sal) in (select deptno, max(sal) from emp group by deptno)

其中的 子查询

select deptno, max(sal) from emp group by deptno

是可以独立执行的.

而且对于整个查询来讲, 是执行一次子查询先, 再执行主查询.

3. 什么是关联子查询

所谓关联子查询就是指子查询与主查询之间有条件关联, 不能独自执行.

看回上面的需求, 我们换一种写法:

select a.deptno, a.* from emp a
where a.sal = (select max(b.sal) from emp b where b.deptno =  a.deptno)

上面的例子就是用到关联子查询了, 其中的子查询因为条件关联了主查询的表. 所以子查询不能单独执行.

对于关联子查询来讲, 是自外到内的, 先执行外查询,.

例如上面的例子, 对于主表a来间, 对于每1个deptno, 都要执行一次子查询.

关联子查询还有1个限制, 就是子查询不能返回多于1行的数据.

否则会出现如下的错误信息:

ORA-01427: 单行子查询返回多个行
01427. 00000 -  "single-row subquery returns more than one row"
*Cause:    
*Action:
相关子查询(correlated subquery) 与非相关子查询 1.概念:   子查询分为两种类型:独立子查询和相关子查询      ①独立子查询是单独执行,其结果参与外层的查询,         整个查询中子查询只执行一次,执行完后再执行外层查询;      ②相关子查询是指子查询(内层查询)中引用了外层查询所引用表的字段,         因此外层查询处理每一条记录时都必须执行一次子查询,         因为子查询中引用的字段的值发生了变化。 阅读详情

相关推荐

零基础学SQL(十、子查询与多表关联)

子查询与多表关联

心寒的博客 1073

SQL进阶之路06:关联子查询

但上面写的存在一个问题就当年份一旦出现空挡期那么就会造成数据错误!可以尝试使用比year小但是在小的当中最大值来进行处理。首先可以尝试获取到与上一年销售额一致的是数据!得到答案后进行一个处理后就可以拿到我们需要的结果!如何比较输出与上一年相比是增加或者减少的数据?例题:假设一张表记录了每年的销售额。输出想要的结果可以使用CASE来进行。

m0_58768327的博客 1428

I-Cache 和 D-Cache

I-Cache 和 D-Cache

liuyuanbin9001 7023

关联查询和子查询

推荐使用子查询,因为子查询查找的范围更小。关联查询是两个表的积中查找,子查询是和中查找。如果是左外连接,就把学生表放在左边;如果是右外连接,就把学生表放在右边。左外连接:grade中12无学生,但是还是会显示出来(子查询先运行,将查询的结果当成另一个查询的条件。2、内连接:找到两个表中的关联数据。将查询的两个结果进行union。1、全连接:两个表作笛卡尔积。union:重复的只出现一次。1、查询全部一年级的学生信息。,找到左边表中所有的数据)找的是学生,就以学生为基准。,找到右边表中所有的数据。

m0_58679504的博客 845

法律AI工具横评:Kimi Work与WorkBuddy,谁更适合法律人?

在人工智能技术日益普及的今天,自然语言处理(NLP)和大语言模型(LLM)正深刻改变着专业领域的工作范式。其核心原理在于通过海量数据训练,使模型能够理解、生成和推理人类语言。这一技术价值在于将从业者从繁琐、重复的信息处理工作中解放出来,极大提升工作效率与知识获取的便捷性。在法律、金融、咨询等对文本处理要求极高的行业,AI助手已展现出在文档分析、信息检索和内容生成方面的巨大潜力。具体到法律应用场景,AI工具能够辅助完成合同审查、法律检索和文书起草等核心任务,成为专业人士的得力助手。本文聚焦于近期备受关注的两款

weixin_30279671的博客 560

华为AR6140E/S5735设备密码策略配置全攻略:从复杂度到锁定机制

本文详细介绍了华为AR6140E/S5735设备的密码策略配置方法,涵盖密码复杂度、时效性和防护性三大核心维度。通过具体的CLI命令示例,指导管理员如何设置密码长度、字符组合、有效期及登录失败锁定等安全机制,为企业网络提供全面的用户名密码防护策略。

weixin_30836759的博客 531

关联子查询

这个子查询能正常工作是因为它被设计为关联子查询+聚合函数,确保为外部查询的每一行返回且只返回一个值。

好记性不如烂笔头 299

高效静音黑科技 —— 单相直流无刷电机驱动器

然而,传统的BLDC电机驱动通常依赖于三相架构,电路复杂,成本高昂,且在低功率应用中显得有些“大材小用”。单相直流无刷电机驱动器作为一项高效、静音、经济的技术,正逐渐改变着各个领域的电机驱动方式。其精巧的控制策略、显著的优势以及广阔的应用前景,都预示着这项技术将在未来扮演越来越重要的角色。它相较于传统的三相驱动,显著简化了电路结构,降低了成本,尤其适用于低功率、对静音要求极高的应用场景。通过这些模块的协同工作,单相直流无刷电机驱动器能够实现对电机速度、扭矩的精确控制,并最大程度地降低噪声和振动。

wen8789的博客 1764

第9节-子查询-Correlated-Subquery

摘要:本文介绍了PostgreSQL关联子查询的使用方法。关联子查询依赖于外部查询的值,需要为外部查询的每一行执行,可能影响性能。通过产品表示例,演示了如何查找每个品牌最贵产品,并对比了关联子查询和JOIN+GROUP BY两种实现方式。后者通过减少子查询执行次数来提高性能,尤其适用于大型表。文章建议在实际应用中优先考虑使用JOIN替代关联子查询以优化查询效率。

知识的力量 823

CryoEM - 使用 ChimeraX 工具 操作 冷冻电镜的 MRC 密度图(Density Map) 教程

由冷冻电镜 CryoSparc 软件所生成的 Volume,需要观察其内部结构,建议使用 ChimeraX 进行操作。

AGI 4962

视频压缩的工作原理

当你正在观看你最喜欢的节目,出现缓冲的时候,这是什么原因?当 Wi-Fi 带宽不足以下载传输视频流所需的数据时,就会发生缓冲。也有可能是视频网站发布了未压缩版本的视频文件,因此视频文件太大而无法流畅地流式传输。在高清模式下,图像分辨率为1080x1920像素,如果我们想象一个视频由许多这些图像组成,称为帧,那么 Wi-Fi 连接必须多快才能播放24帧/秒?答案是超1000兆,没错。由于每一帧都是48兆比特的数据,它实际上需要48×24每秒兆比特 (Mbps) 以观看视频24帧/秒。

学以致用 知行合一 1280

oracle中的关联子查询,Oracle 的关联子查询(correlated subquery) 简介.

相信 接触过 ocp考题既, 都会见到 correlated subquery的字眼.correlated subquery的中文名称就是相关子查询呢?1. 什么是子查询这个很简单, 子查询就是嵌套在主查询里的查询了.例如, 在scott 模式下我想查找所有比Allen 工资高的员工我们可以写成这样:select a.* from emp a, emp bwhere a.sal > b.s...

weixin_34827430的博客 679

手把手教你用ESP32-C3打造智能聊天机器人-立创实战派

本文将详细介绍如何利用立创ESP32-C3开发板,烧录小智AI程序,快速实现一个功能强大的聊天机器人。

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 5534

简单子查询(Correlated Subquery)的核心原理

核心原理:作用域链:子查询可以访问外层查询的表和列逐行处理:外层查询每处理一行,子查询就执行一次动态关联:子查询的结果依赖于当前处理的外层行这种机制让SQL具有了强大的表达能力,可以处理复杂的业务逻辑,但也要注意性能影响!

emmmm的博客 517

Qt Creator牵手DeepSeek,开启AI开发新征程

Qt Creator 是一款功能强大的跨平台集成开发环境(IDE),专为 Qt 应用程序开发量身定制。它支持在编程过程中使用 GitHub Copilot 等编码助手,能帮助开发者为桌面、移动端和嵌入式平台创建软件。在代码编辑方面,Qt Creator 具备代码补全、语法突出显示、重构等功能,内置文档也随手可得,极大提高了代码编写的效率和准确性。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 7189

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Oracle 的关联子查询(correlated subquery) 简介.

相信 接触过 ocp考题既, 都会见到 correlated subquery的字眼. correlated subquery的中文名称就是相关子查询呢? 1. 什么是子查询 这个很简单,  子查询就是嵌套在主查询里的查询了. 例如, 在scott 模式下我想查找所有比Allen 工资高的员工 我们可以写成这样: select a.* from emp a,

nvd11的专栏 9454

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

23. SparkSQL - The correlated scalar subquery can only contain equality predicates

23. SparkSQL - The correlated scalar subquery can only contain equality predicates https://stackoverflow.com/questions/41631199/sparksql-the-correlated-scalar-subquery-can-only-contain-equality-pred...

元元的李树专栏 731

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

correlated subquery and non-correlated subquery

子查询:嵌套在其他查询中的查询称之。 子查询又称内部,而包含子查询的语句称之外部查询(又称主查询)。 所有的子查询可以分为两类,即相关子查询和非相关子查询 1>非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。 2>相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。 故非相关子查询比相关子查询效率高 查询工资大于所有员工

Watson的专栏 2211

gp数据库---子查询报错 correlated subquery with skip-level correlations is not supported

gp数据库(greenPlum)代码jdbc执行sql报错信息: SQL state [0A000]; error code [0]; [Pivotal][Greenplum JDBC Driver][Greenplum]correlated subquery with skip-level correlations is not supported. ; nested exception...

IcyWang1的博客 3982

mysql 非相关子查询_mysql函数取代相关子查询(Correlated subquery)

CREATE TABLE `20121105_teacher` (`teacher_id` int(11) NOT NULL,`school_id` int(11) NOT NULL,PRIMARY KEY (`teacher_id`),KEY `20121105_teacher_idx_school` (`school_id`)) ENGINE=InnoDB教师表,里面有1000个教师,随机分布...

weixin_39628342的博客 290

SQL Correlated Subquery

SQL Correlated Subquery WHEN to use : 1.when asking negative data questions https://learnsql.com/blog/correlated-sql-subquery-5-minutes/ 2. https://www.w3resource.com/sql-exercises/subqueries/sql-subqueries-inventory-exercise-11.php

Zhongjie1986的博客 524

Stairway to T-SQL: Beyond The Basics Level 3: Building a Correlated Subquery - SQLServerCentral

在这个阶梯的第2级中,我讨论了如何在Transact-SQL语句中使用子查询。这个阶梯级别将通过讨论一种名为“子查询”的子查询类型来扩展子查询主题。相关子q尤利。我将探讨什么是关联子查询,以及它与普通子查询有何不同。此外,我将向您提供一些事务SQL语句的示例,这些语句超出了基础,并使用相关子查询帮助识别结果集中返回的行,以满足复杂的业务需求。什么是关联子查询?在这个阶梯的第2级中,我们了解到普通子...

Eden_yhy的博客 277

non-correlated subquery or correlated sub query - [sql语句]

转载:http://justdba.blogbus.com/logs/69326805.html版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://justdba.blogbus.com/logs/69...

cuici65440的专栏 454
上一篇: sqlserver之group by 与over函数
下一篇: .net core web 中使用app.UseRouter的几种使用方式
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值