with

as也叫做子查询部分,首先定义一个sql片段,该sql片段会被整个sql语句所用到,为了让sql语句的可读性更高些,作为提供数据的部分,也常常用在union等集合操作中。with

as最大的好处就是适当的提高代码可读性,而且如果with子句在后面要多次使用到,这可以大大的简化SQL。

关于with as子句的用法,下面两个例子看看就OK了:

-- 例子1

WITH dept_costs AS

(SELECT d.department_name, SUM(e.salary) AS dept_total

FROM employees e, departments d

WHERE e.department_id = d.department_id

GROUP BY d.department_name),

avg_cost AS

(SELECT SUM(dept_total) / COUNT(*) AS dept_avg FROM dept_costs)

SELECT *

FROM dept_costs

WHERE dept_total > (SELECT dept_avg FROM avg_cost)

ORDER BY department_name;

-- 例子2

WITH sql1 AS

(SELECT to_char(a) s_name FROM test_tempa),

sql2 AS

(SELECT to_char(b) s_name

FROM test_tempb

WHERE NOT EXISTS (SELECT s_name FROM sql1 WHERE rownum = 1))

SELECT *

FROM sql1

UNION ALL

SELECT *

FROM sql2

UNION ALL

SELECT 'no records'

FROM dual

WHERE NOT EXISTS (SELECT s_name FROM sql1 WHERE rownum = 1) AND NOT EXISTS (SELECT s_name

FROM sql2

WHERE rownum = 1);

在oracle数据库开发中有时候要对临时数据的一些处理,但是这些数据又不想放到table里面而且cursor的灵活性又不是很好。这个时候可以考虑with as。

with as是在内存中建立一个临时的table。可以对这个temp table里面的数据进行整理。

得到一个temp table就可以对table的记录进行操作了,例如求平均数。

还可以和现有的table进行查询。

由于with as是内存中的table所以还是比较快的。如果数据比较大的时候建议不要用with as这样的话变得很慢。

oracle with as内存,oracle中with as子句的用法小结(转)相关推荐

  1. oracle 在此 select 语句中缺少 into 子句,Go database/sql文档

    No.1 文档概要 在Golang中使用SQL或类似SQL的数据库的惯用方法是通过 database/sql 包操作.它为面向行的数据库提供了轻量级的接口.这篇文章是关于如何使用它,最常见的参考. 为 ...

  2. oracle lms进程 内存,Oracle进程:LMS 进程与Oracle RAC

    Oracle进程:LMS 进程与Oracle RAC LMS进程是Oracle RAC环境下非常重要的一个进程,关于这个进程的解释在不同文档中也有所不同. 在Oracle 9iR2的概念手册中这样介绍 ...

  3. oracle lms进程 内存,Oracle RAC 内存融合(Cache Fusion)

    原标题:Oracle RAC 内存融合(Cache Fusion) 内存融合核心进程 LMS(Global Cache Service Process):这个进程负责完成GCS的大部分工作,它会维护G ...

  4. oracle数据库常驻内存,oracle如何让表常驻内存?

    1.前言.   如题. 2.如何常驻内存   摘自:http://blog.163.com/ouyangjie0002/blog/static/190709248201161644658941/    ...

  5. oracle 更改启动内存,Oracle 11gR2修改内存参数后无法启动问题

    Microsoft Windows [版本 6.1.7600] 版权所有 (c) 2009 Microsoft Corporation.保留所有权利. C:\windows\system32>n ...

  6. oracle一体机诊断内存,Oracle内存诊断

    --当前内存分配情况 select * from v$memory_dynamic_components order by current_size desc; ---总内存量建议 select * ...

  7. string类有可以调换方向的函数吗_C++中的string类的用法小结

    相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯 ...

  8. SpringMVC中@RequestMapping 6个基本用法小结

    1)最基本的,方法级别上应用,例如: Java代码   @RequestMapping(value="/departments") public String simplePatt ...

  9. Spring mvc中@RequestMapping 6个基本用法小结

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 小结下spring mvc中的@RequestMapping的用法. 1)最基本的,方法级别上应用, ...

最新文章

  1. Linux拜拜!微软给WSL加入GPU支持,Windows终于迎来命令行包管理工具
  2. 线程五种状态(新建、就绪、运行、阻塞、死亡)
  3. php编程查错,盘点PHP编程常见失误
  4. Tomcat源码分析--转
  5. CERC2017 Gambling Guide,最短路变形,期望dp
  6. 1使用技巧_新版PubMed使用技巧1
  7. java异常不懂,看不懂的异常提示啊
  8. 变革,是领导者的特质
  9. fifa15服务器位置,《FIFA 15》系统菜单界面图文详解 各游戏模式详解
  10. C#.NET快速开发框架-企业版V4.0截图打包下载
  11. 2007以学习软件设计开始
  12. 网络人“时间都去哪儿了”
  13. Controller中servletFileUpload.parseRequest(request)解析为空
  14. webpack和 php配合,javascript - webpack和laravel-elixir-webpack的正确配合方式?
  15. Xshell免费版安装 常用连接linux工具
  16. 网页调用rm播放器代码 - 详细说明
  17. Avoiding 16 Common OpenGL Pitfalls(避免 16 个常见的 OpenGL 陷阱)
  18. ASP.NET Core 高级(一)【.NET 的开放 Web 接口 (OWIN)】
  19. Redis的常用应用场景
  20. HDFS基础知识(个人总结)

热门文章

  1. 桁架工业机器人编程_工业机器人之桁架机器人
  2. php中for循环控制讲解,PHP教程第九讲——PHP开发基础:PHP的循环控制语句
  3. python格式化输出 xz_Python——详解__str__, __repr__和__format__
  4. python win32模块详解_python模块:win32com用法详解
  5. 个人或者企业怎么进行app开发?开发一款APP应用大概须要多少钱?
  6. PHP buffer的机制
  7. [转] 微信小程序 页面跳转 传递参数
  8. 《C专家编程》第三章——分析C语言的声明
  9. jsp页面点击显示影藏div的一个方法
  10. c# 读取写入excel单元格基本操作