为什么80%的码农都做不了架构师?>>>   

语法:
WITH query_name AS (subquery)
     [, query_name AS (subquery) ]...
使用在主select关键字前,oracle将其当做一个内联视图或者临时表使用。

例子:

1.   最简单的使用方法:

如查询部门名称包含“A”的所有员工信息

--with clausewith a as(select deptno from dept where dname like '%A%')select * from emp where deptno in (select * from a); with a as(select deptno from dept where dname like '%A%'),--a结果集a2 as(select * from a where deptno>20)--a1结果集直接从a中筛选select * from emp where deptno in (select * from a2);

2.   多层同级只能用一个with,并且后面的结果集可以使用前面的结果集:

查询部门名称包含“A”并且部门编号大于20的所有员工信息

with a as(select deptno from dept where dname like '%A%'),--a结果集a2 as(select * from a where deptno>20)--a1结果集直接从a中筛选select * from emp where deptno in (select * from a2);

3.   不同级查询可以使用多个with:

查询部门名称包含“A”并且部门编号大于20的所有员工信息的另外一种实现方式如下

with a as(select deptno from dept where dname like '%A%')--a结果集select * from emp where deptno in (--括号内层作为子查询,为第二级with a2 as(select * from a where deptno>20)--a1结果集直接从a中筛选select * from a2);

使用场景:

那什么情况下能使用到with子句呢?以下我就举几个简单的例子,简单的说明以下:

1.         我想测试一句sql,而我不想专门建立一个测试表:

我想测试成绩大于90的学生,我不想建立学生表,可以用到with子句

with stu as(select '张娜' sname,99 score from dual unionselect '王杰' ,35  from dual unionselect '宋丽' ,85  from dual unionselect '陈晓' ,73  from dual unionselect '李元' ,100  from dual)--with 组成一个临时的结果集,存放在用户的临时表空间select  * from stu where score>90

2.         当一个sql重复用到某个相同的结果集作为子查询:

--查询销售部工资>1500或者销售部工资小于1000的员工

select * from emp where deptno=(select deptno from dept where dname ='SALES') and sal >1500union allselect * from emp where deptno=(select deptno from dept where dname ='SALES') and sal <1000--以上sql select deptno from dept where dname ='SALES'需要执行两次,影响效率--可以使用with优化一下with salno as(select deptno from dept where dname ='SALES')select * from emp where deptno=(select * from salno) and sal >1500union allselect * from emp where deptno=(select * from salno) and sal <1000

转载于:https://my.oschina.net/hulubo/blog/53184

oracle中with子句的用法(转)相关推荐

  1. oracle中的with的用法,oracle中with子句的用法(转)

    语法: WITH query_name AS (subquery) [, query_name AS (subquery) ]... 使用在主select关键字前,oracle将其当做一个内联视图或者 ...

  2. oracle中over()分析函数的用法

    摘自: http://www.poluoluo.com/jzxy/201004/81921.html 百度文库也记载了oracle中over()分析函数的用法 在泡坛子的时候中无意中发现了这个函数,才 ...

  3. Oracle中游标Cursor基本用法详解

    这篇文章主要介绍了Oracle中游标Cursor基本用法详解,还是比较全面的,具有一定参考价值,需要的朋友可以了解下. 查询 SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT ...

  4. Oracle中ROW_NUMBER() OVER()函数用法

    Oracle中ROW_NUMBER() OVER()函数用法 1. 说明:ROW_NUMBER() OVER() 函数的作用:分组排序 2. 原理: row_number() over() 函数,ov ...

  5. oracle中的merge into用法解析

    oracle中的merge into用法解析 merge into的形式 MERGE INTO [target-table] A USING [source-table sql] B ON([cond ...

  6. oracle中的to_number,Oracle中to_number()函数的用法

    to_number()函数是oracle中常用的类型转换函数之一,是将一些处理过的按一定格式编排过的字符串变回数值型的格式. 1.to_number()函数可以将char或varchar2类型的str ...

  7. Oracle中to_char()函数的用法

    Oracle中to_char()函数的用法 日期转换: to_char(date,'格式') select to_date('2005-01-01 ','yyyy-MM-dd') from dual; ...

  8. oracle to_char函数格式,oracle 中to_char函数的用法

    一.日期格式转换 to_char(date,'格式'); select to_date('2005-01-01 ','yyyy-MM-dd') from dual; select to_char(sy ...

  9. Oracle中add_months()函数的用法

    Oracle中add_months()函数的用法 查询当前时间n个月以前的时间: select add_months(sysdate,-n) from dual; 查询当前时间n个月之后的时间: se ...

  10. oracle中rollback用法,Oracle中SAVEPOINT和ROLLBACK用法

    savepoint是事务内部允许部分rollback的标志符.因为事务中对记录做了修改,我们可以在事务中创建savepoint来标识不同的点.如果遇到错误,就可以rollback到不同的点或直接回来事 ...

最新文章

  1. iOS 导航栏遮挡问题 --- iOS开发系列 ---项目中成长的知识七
  2. css权威指南pdf
  3. 用python做问答测试_测试用户输入Python
  4. 邮件服务器收件人数量限制,邮件服务器DBMail
  5. CG CTF WEB 密码重置
  6. linux文字模式怎么传文件夹,虚拟机VMWare文本模式Linux 与 Windows 文件互传
  7. 文本框不可编辑,只可使用帮助的解…
  8. Mozilla Prism v0.9 For Windows/Linux/Mac
  9. java json 易用_Java中 Json的使用
  10. 工业型交换机相比普通交换机有哪些要求?
  11. 浅谈开关量采集回路的设计及交流干扰问题解决方案
  12. 基于windows平台的命令行软件安装工具Chocolatey的安装
  13. TDL(HDU-6641)
  14. 读《你的灯亮这么》---走出问题的乌托邦
  15. eclipse的自动检查语法错误功能让我有点烦,能不能关掉,或者,只是10秒检查一次。。...
  16. html添加兄弟元素,jquery插入兄弟节点的操作方法
  17. 学习《21天学通java(第7版)》之错误收集
  18. python下载豆丁文档_doc_downloader
  19. java有哪些字体_java字体有哪些
  20. 太极图正确画法_八卦太极图的正确画法

热门文章

  1. 《深度学习Python实践》第14章——自动流程
  2. python PPT学习资料分享
  3. 【ArcGIS|空间分析】数据交互(Google Earth与ArcGIS,ENVI与ArcGIS)
  4. Mybatis-逆向工程
  5. ubuntu 18.04安装php 7,如何在Ubuntu 18.04和16.04上安装PHP(7.3,7.2和7.0)?
  6. Flink Weekly | 每周社区动态更新 - 20200107
  7. html5 embed 不自动播放,html5自动播放与 iframe 你管videoautoplay=1不工作?_html5_开发99编程知识库...
  8. linux的set命令详解,Linux_批处理 Set 命令详解 让你理解set命令,set,E文翻译过来就是“设置” - phpStudy...
  9. php jwt使用案例,PHP JWT初识及其简单示例
  10. 【Python】模糊匹配搜索