PLSQL_基础系列10_子查询WITH AS(案例)

简介: 2015-05-29 Created By BaoXinjian 一、摘要 使用WITH AS 语句可以为一个子查询语句块定义一个名称,使用这个子查询名称可以在查询语句的很多地方引用这个子查询。 Oracle 数据库像对待内联视图或临时表一样对待被引用的子查询名称,从而起到一定的优化作用。

2015-05-29 Created By BaoXinjian

一、摘要


使用WITH AS 语句可以为一个子查询语句块定义一个名称,使用这个子查询名称可以在查询语句的很多地方引用这个子查询。

Oracle 数据库像对待内联视图或临时表一样对待被引用的子查询名称,从而起到一定的优化作用。

WITH子句是9i新增语法。你可以在任何一个顶层的SELECT 语句以及几乎所有类型的子查询语句前,使用子查询定义子句。

被定义的子查询名称可以在主查询语句以及所有的子查询语句中引用,但未定义前不能引用。

WITH句中不能嵌套定义<也就是with子句中不能有WIT子句>,但子查询中出现H的“子查询定义”语句可以引用已定义的子查询名称,<可以引用前面已经定义的with子句>

 

二、使用案例


使用案例方法

select e.ename
  from emp e
 where e.deptno in (select d.deptno from dept d where d.deptno = 10);

with a as
 (select e.ename, e.deptno from emp e)
select a.ename
  from a
 where a.deptno in
       (with b as (select d.deptno from dept d where d.deptno = 10)
         select * from b
        );

with a as
 (select e.ename, e.deptno from emp e),
b as
 (select d.deptno from dept d where d.deptno = 10)
select a.ename from a where a.deptno in (select * from b);

 

Thanks and Regards

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
6月前
|
SQL 缓存 关系型数据库
一次sql改写优化子查询的案例
在生产环境中,一个MySQL RDS实例遭遇了高CPU使用率问题,原因是执行了一条复杂的UPDATE SQL语句,该语句涉及一个无法缓存的子查询(UNCACHEABLE SUBQUERY),导致子查询需要针对每一行数据重复执行,极大地影响了性能。SQL语句的目标是更新一行数据,但执行时间长达30秒。优化方法是将子查询转换为内连接形式,优化后的语句执行时间降低到毫秒级别,显著减少了CPU消耗。通过示例数据和执行计划对比,展示了优化前后的时间差异和执行效率的提升。
245 2
SQL进阶之疯狂的子查询
今天我们不谈子查询的执行效率,只谈子查询功能。对于SQL语句来说,编程开发人员应该都不会陌生,其实各种复杂的逻辑最终落地也就是那么几个基本的招式,增删改查,然而我们经常听到武功招式中又各种连招,那就是了,子查询就是这么个意思。很多SQL简单查询完成不了的查询,子查询都可以很疯狂地完成。当然有的需要一个子查询就够了,有的甚至可能需要嵌套多个子查询来完成。
70 0
SQL进阶之疯狂的子查询
|
SQL 关系型数据库 MySQL
软件测试最常用的 SQL 命令(二) | 高级 Join 多表查询
软件测试最常用的 SQL 命令(二) | 高级 Join 多表查询
99 0
|
SQL
一张图看懂 SQL 的各种 join 用法!
一张图看懂 SQL 的各种 join 用法!
307 0
一张图看懂 SQL 的各种 join 用法!
|
SQL 机器学习/深度学习 网络安全
【SQL刷题】DAY19----SQL联结表专项练习
【SQL刷题】DAY19----SQL联结表专项练习
158 0
【SQL刷题】DAY19----SQL联结表专项练习
|
SQL 机器学习/深度学习 网络安全
【SQL刷题】DAY15----SQL联结表专项练习
【SQL刷题】DAY15----SQL联结表专项练习
102 0
【SQL刷题】DAY15----SQL联结表专项练习
|
SQL OLAP Serverless
【教奶奶学SQL】(task5)SQL高级处理(窗口函数 | ROLLUP)
窗口函数也称为OLAP函数。OLAP 是 OnLine AnalyticalProcessing 的简称,意思是对数据库数据进行实时分析处理。 为了便于理解,称之为 窗口函数。常规的SELECT语句都是对整张表进行查询,而窗口函数可以让我们有选择的去某一部分数据进行汇总、计算和排序。
156 0
【教奶奶学SQL】(task5)SQL高级处理(窗口函数 | ROLLUP)
|
SQL 关系型数据库 MySQL
软件测试最常用的 SQL 命令(二) | 高级 Join 多表查询
软件测试最常用的 SQL 命令(二) | 高级 Join 多表查询