关联子查询

oracle的关联子查询

关联子查询会引用外部查询中的一列或多列,这种子查询之所以被称为关联子查询,是因为他的确与外部语句相关。具体实现时,外部查询中的每一行都传输给子查询,子查询依次读取传递过来的每一行的值,并将其应用到子查询上,知道外部查询中的所有行都处理完为止,然后返回子查询结果。

例如:查询各个部门中,哪些员工的工资低于其所在部门的平均工资。

SQL>select empno,ename,sal,deptno from emp outer where sal<(select avg(sal) from emp inner where inner.deptno=outer.deptno)

EMPNO ENAME             SAL     DEPTNO

---------- ---------- ---------- ----------

7369 SMITH             800           20

7521 WARD             1250         30

7654 MARTIN           1250        30

7782 CLARK            2450         10

7844 TURNER           1500       30

7876 ADAMS            1100        20

7900 JAMES             950          30

7934 MILLER           1300         10

已选择 8 行。

时间: 2024-10-18 06:17:07

关联子查询的相关文章

嵌套子查询和关联子查询

嵌套子查询:  1. 内部查询只处理一次 2. 与null比较,总得到null 3.先进行内部查询,然后再进行外部查询 关联子查询: 1.外部查询得到的每条记录传入到内部查询 2.内部查询基于外部查询传入的值 3.内部查询从其结果中把值传回到外部查询,外部查询使用这些值来完成其处理 什么时候使用? 外部查询返回较少记录时,关联子查询比嵌套子查询效率高; 内部查询返回较少记录时,嵌套子查询比关联子查询效率高. in和exists select * from A where cc in (selec

mssql sql高效关联子查询的update 批量更新

/* 使用带关联子查询的Update更新     --1.创建测试表 create TABLE Table1     (     a varchar(10),     b varchar(10),     c varchar(10),     CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED     (     a ASC     )     ) ON [PRIMARY] create TABLE Table2     (     a varchar(10

利用带关联子查询Update语句更新数据

Update是T-sql中再简单不过的语句了,update table set column=expression  [where condition],我们都会用到.但update的用法不仅于此,真正在开发的时候,灵活恰当地使用update可以达到事半功倍的效果. 假定有表Table1(a,b,c)和Table2(a,c),现在Table1中有些记录字段c为null,要根据字段a在Table2中查找,取出字段a相等的字段c的值来更新Table1.一种常规的思路,通过游标遍历Table1中字段c

第五章 复杂查询 5-3 关联子查询

一.普通子查询和关联子查询的区别 在对表中某一部分记录的集合进行比较时,就可以使用关联子查询.在细分的组内进行比较时,需要使用关联子查询. 使用关联子查询是,通常会使用"限定(绑定)"或者"限制"这样的语言. 重点:这里起到关键作用的是在子查询中添加的WHERE子句的条件,该条件指定在同一商品中对各商品的销售单价和平均单价进行比较.注:在使用关联子查询时,需要在表所 对应的列名之前加上表的别名,以"< 表名 >.< 列名 >&quo

肤浅的聊聊关联子查询,数据集连接,TiDB代码,关系代数,等等

本章涉及的内容是TiDB的计算层代码,就是我们编译完 TiDB 后在bin目录下生成的 tidb-server 的可执行文件,它是用 go 实现的,里面对 TiPD 和 TiKV实现了Mock,可以单独运行: 用explain语句可以看到一条sql在TiDB中生成的最终执行计划,例如:我们有一条关联子查询: select * from t1 where t1.a in (select t2.a from t2 where t2.b = t1.b); tidb> explain select *

SQL基础教程(第2版)第5章 复杂查询:5-3 关联子查询

● 关联子查询会在细分的组内进行比较时使用.● 关联子查询和GROUP BY子句一样,也可以对表中的数据进行切分.● 关联子查询的结合条件如果未出现在子查询之中就会发生错误. 普通的子查询和关联子查询的区别 这样大家就能明白该进行什么样的操作了吧.我们并不是要以全部商品为基础,而是要以细分的组为基础,对组内商品的平均价格和各商品的销售单价进行比较. 关联子查询也是用来对集合进行切分的 结合条件一定要写在子查询中 原文地址:https://www.cnblogs.com/MarlonKang/p/

18 12 06 sql 的 基本语句 查询 条件查询 逻辑运算符 模糊查询 范围查询 排序 聚合函数 分组 分页 连接查询 自关联 子查询

-- 数据的准备 -- 创建一个数据库 create database python_test charset=utf8; -- 使用一个数据库 use python_test; -- 显示使用的当前数据是哪个? select database(); -- 创建一个数据表 -- students表 create table students( id int unsigned primary key auto_increment not null, name varchar(20) default

关联子查询Update语句

--1.创建测试表 create TABLE Table1 ( a varchar(10), b varchar(10), c varchar(10), CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED ( a ASC ) ) ON [PRIMARY] create TABLE Table2 ( a varchar(10), c varchar(10), CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED ( a AS

mysql子查询慢的问题

当你在用explain工具查看sql语句的执行计划时,若select_type 字段中出现"DEPENDENT SUBQUERY"时,你要注意了,你已经掉入了mysql子查询慢的"坑"...下面我们来看一个具体的例子 有这样一条查询语句: SELECT gid,COUNT(id) as count FROM shop_goods g1 WHERE status =0 and gid IN (SELECT gid FROM shop_goods g2 WHERE si