Oracle with as用法

一、简介

with…as关键字,是以‘with’关键字开头的sql语句,在实际工作中,我们经常会遇到同一个查询sql会同时查询多个相同的结果集,即sql一模一样,这时候我们可以将这些相同的sql抽取出来,使用with…as定义。with…as相当于一张中间表,可以简单理解为sql片段(类似java复用代码)。

下面我们通过两个简单的示例说明with…as的使用方法。

二、使用方法

【a】多次使用抽取出来

–with as 可以理解为一张临时表或者理解成sql片段,在多次查询语句相同的时候可以抽取出来,达到’一次解析,多次使用’
–如果每个部分都去执行一遍的话,则成本比较高,可以使用with as短语,则只要执行一遍即可

with temp as(select '10001' as province_code from dual)select casewhen (select * from temp) = '10001' then'equals'when (select * from temp) = '10002' then'not equals'else'unknown'end is_equalsfrom dual;

img

【b】在union 语句中使用

--with as 非常适合在union 语句中
--注意:with as 语句最后面不能加分号,否则报缺失select关键字错误。
with temp1 as(select 'female' sex, 'zhangsan' stu_name from dual),
temp2 as(select 'male' sex, 'lisi' stu_name from dual),
temp3 as(select 'female' sex, 'wangwu' stu_name from dual)select *from temp1
union all
select *from temp2
union all
select * from temp3

在这里插入图片描述

在这里插入图片描述

注意点:with…as后面不能加分号,否则报错。

【c】注意点:

  1. 不能只定义with…as语句,定义了要使用它,否则会报错
--只定义with..as会报错
with temp1 as(select 'female' sex, 'zhangsan' stu_name from dual),
temp2 as(select 'male' sex, 'lisi' stu_name from dual)

在这里插入图片描述

  1. 前面定义的with…as语句可以在后面定义的with…as语句中使用
--前面定义的with..as语句可以在后面定义的with..as语句使用
with temp1 as(select 'female' sex, 'zhangsan' stu_name from dual),
temp2 as(select 'male' sex, 'lisi' stu_name from dual),
temp3 as(select * from temp2)select *from temp1
union all
select *from temp2
union all
select * from temp3

在这里插入图片描述

三、总结

with…as其实就是将经常需要查询的语句抽取出来,形成一个虚拟表,我们后面可以多次使用,达到‘一次解析,多次使用’的效果,大大提高执行的效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/758952.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware迁移虚拟机后,源存储和新存储均能看到VM名称

描述:两台FC存储,各映射两个LUN。将源存储虚拟机迁移至新存储 源存储位置 DS5020-LUN1 新存储位置 V7000Test-LUN1 迁移任务均执行成功,无任何报错。但是有部分虚拟机迁移至新存储后,未释放源存储空间。在新旧存储列表都能看见…

后端使用前端页面的很好的推荐Layui

使用前提条件就是掌握初步的html,css,js脚本 后端被前端的vue等框架,不想学习,就是简单的一个页面满足后端使用 一般建议就是掌握了基础的html,css,js脚本后,然后就是深入学习了解jquery,再找…

手拉手整合Springboot3+RocketMQ2.3

RocketMQ 基本概念 消息模型Message Model RocketMQ 主要由 Producer、Broker、Consumer 三部分组成,其中 Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息。Broker 在实际部署过程中对应一台服务器,每个 Bro…

PHP全新美化广告横幅在线制作源码

源码简介 可以做网站的引流不需要安装上传就可以使用,在第一版基础上做了二次开发更加好用 注意:主机和服务器均可架设搭建,如果使用宝塔架设点击访问的时候提示找不到文件路径的时候,记得点击网站目录把防跨站攻击先关闭,这样就可以正常访问了,这款是…

Mysql查询与统计

单表查询 例如:查询某个表中的某些数据 select * from 表名; select 字段1,字段2 from 表名; 多表查询:join on 例如:查询多个表中的数据,例如:表1写的是商品信息:商品ID,名字,表…

两台电脑简单的通信过程详解(局域网,同网段)

来源: https://www.bilibili.com/video/BV1BA411373b/ 一、原理 描述过程:分别以PC1、PC2、PC2、PC1的角度 二、eNSP测试 1.连接设备 2.查看PC1情况 3.打开抓包后,再ping一下PC2 4.PC1发送ARP报文 broadcast 意思为广播(IP都是f,意为255…

【数字图像处理matlab系列】保存图像

【数字图像处理系列】保存图像imwrite函数 使用函数imwrite可以将图像保存到本地上,该函数的语法为 imwrite(image_data, filename)其中,image_data是要写入的图像数据,可以是一个矩阵或一个三维数组(对于彩色图像)&…

C语言程序设计-谭浩强

文章目录 1 C语言2 算法3 顺序程序设计3.1 数据的表示形式3.2 输入和输出 4 选择程序结构5 循环程序结构6 数组7 函数模块化8 指针8.1 动态内存分配 9 结构类型9.1 链表9.2 共用体 union9.3 枚举 enum9.4 typedef 10 对文件的输入输出10.1 顺序读写10.2 随机读写 1 C语言 1.1 …

Java代码基础算法练习-求给定3个数, 进行从小到大排序-2024.03.20

任务描述&#xff1a; 输入三个整数 x,y,z(0<x<1000&#xff0c;0<y<1000&#xff0c;0<z<1000)&#xff0c;请把这三个数由小到大输出。 任务要求&#xff1a; 代码示例&#xff1a; package march0317_0331;import java.util.Scanner;public class m24…

nginx配置跨域

要在Nginx中配置跨域&#xff0c;您需要编辑Nginx的配置文件&#xff08;通常是nginx.conf&#xff09;&#xff0c;在相应的server或location块中添加CORS相关的响应头。以下是具体的配置步骤&#xff1a; 打开Nginx配置文件&#xff1a;您需要找到并打开Nginx的配置文件&…

python如何在正则表达式匹配成功的位置增加字符

如果你想在正则表达式替换时保持原匹配项不变并在其后添加新内容&#xff0c;你可以使用捕获组&#xff08;capture groups&#xff09;和后向引用&#xff08;backreference&#xff09;。在正则表达式中&#xff0c;捕获组可以通过在模式中使用圆括号来创建&#xff0c;然后可…

SQL基础知识

函数 #left() right() 左边或者右边的字符 #lower() upper() 转换成大写或小写的字符 #ltrim() rtrim() 去除左边或者右边的字符 #length() 长度&#xff0c;一字节为单位 #soundex() 转换为语音值 select * from student where soundex(coll) soundex(hello);日期和时间处理…

系统设计实例(一)百万级别用户系统

二、百万级别用户系统 原则&#xff1a; 尽可能地缓存数据采用无状态Web层支持多个数据中心在 CDN 中托管静态资源通过分片扩展数据层将层级拆分为独立的服务 负载均衡器 负载均衡器会将传入的流量均匀分配给在负载均衡集合中定义的Web服务器&#xff0c;用户直接连接负载均…

【软件测试】如何设计自动化测试脚本

企业中如何设计自动化测试脚本呢&#xff1f;今天我们就来为大家分享一些干货。 一、线性设计 线性脚本设计方式是以脚本的方式体现测试用例&#xff0c;是一种非结构化的编码方式&#xff0c;多数采用录制回放的方式&#xff0c;测试工程师通过录制回访的访问对被测系统进行…

[LCP 51. 烹饪料理] 子集型回溯

Problem: LCP 51. 烹饪料理 文章目录 思路案例分析Code 思路 子集型回溯有两种解法 输入视角 通过判断集合中的每一个元素 k&#xff0c;认为元素 k 被选入子集或不被选入子集&#xff0c;从而得到答案。其 dfs 形状是一个高度为 n 的二叉树。作为当前节点的元素 k 代表的是这…

Unity Toggle与Toggle Group的妙用

Toggle与Toggle Group结合使用&#xff0c;妙处多多。 因为在同一Toggle Group内只有一个Toggle可以被选中&#xff0c;那么对于我们要创建单选按钮组、游戏的一些开关、暗夜模式、筛选不同显示内容等功能都非常好用。 比如我要实现通过点击不同按钮,从而筛选显示不同内容&am…

LeetCode 热题100 链表专题解析

LeetCode 热题100 链表专题解析 链表是计算机科学中非常基础且重要的数据结构&#xff0c;同时也是面试和算法竞赛中的常客。在 LeetCode 热题100 中&#xff0c;链表相关的题目涉及多种技巧和算法思维。本文将深入解析这些题目&#xff0c;帮助读者掌握链表相关问题的解决方法…

OD C卷 - 可以处理的最大任务

可以处理的最大任务&#xff08;200&#xff09; 有一个tasks任务列表&#xff0c;需要处理其中的任务&#xff1b;tasks[i] [si, ei]&#xff0c;该任务可以在si<day<ei之间的任意天处理&#xff1b;一天仅可以完成一个任务&#xff0c;输出可以处理的最大任务数&…

ES8生产实践——ES跨集群数据迁移方案测评

引言 场景需求 经常有小伙伴咨询如何将整个es集群数据如何迁移到另一个集群&#xff0c;其中往往会涉及到以下的问题&#xff1a; 跨es版本&#xff1a;老版本es集群数据迁移到新版本es集群。 跨集群&#xff1a;源数据和目的数据分布在两个不同的集群。 跨网络&#xff1a;两…

第十二章 TypeScript Symbol类型

1.Symbol类型 let a1:symbol Symbol(1) // 唯一的 let a2:symbol Symbol(1) // 唯一的// for Symbol for全局symbol有没有注册过这个key&#xff0c;如果有直接拿来用&#xff0c;如果没有的话他就会创建一个 // console.log(Symbol.for(heming)Symbol.for(heming))let obj …