在SQL规范中有了with as 语句,该语句实质上就是创建临时视图,来帮助你简化语句并使语句结构更清晰更容易阅读。
例子:将选课结果表中一门课都不能抽中的学生查询出来。
WITH T_LXMD AS (
SELECT XKJG.JXBID , KC.KCMC, JXB.BJMC , XKJG.XH, TT.XM, DW.YXMC, ZY.ZYMC, XKJG.XKZY FROM T_XKGL_XKJG XKJG
LEFT JOIN T_XJ_JBXX TT ON XKJG.XH = TT.XH
LEFT JOIN T_DM_DW DW ON TT.XSYXDM = DW.DWDM
LEFT JOIN T_PY_ZY ZY ON ZY.ZYDM = TT.ZYM
LEFT JOIN T_JXRWGL_JXB JXB ON JXB.JXBID = XKJG.JXBID
LEFT JOIN T_PY_KC KC ON KC.KCDM = XKJG.KCDM
WHERE (XKJG.JXBID IN (SELECT JXBID FROM T_XKGL_JXBXKZYTJXX T WHERE T.XXYZYRS+ T.XXEZYRS >= T.KXRL)
AND XKJG.XKZY = 3 )
OR
(XKJG.JXBID IN (SELECT JXBID FROM T_XKGL_JXBXKZYTJXX T WHERE (T.XXYZYRS) >= T.KXRL)
AND XKJG.XKZY > 1 )
)
SELECT DISTINCT XH,XM,YXMC,ZYMC FROM T_LXMD WHERE XH NOT IN(
SELECT DISTINCT XH FROM T_XKGL_XKJG T WHERE
NOT EXISTS (SELECT 1 FROM T_LXMD LXMD WHERE LXMD.JXBID = T.JXBID AND LXMD.XH = T.XH)
)
利用with as创建临时表,如果你后面需要不止一次地引用这个结果,那么WITH就会大大提高效率。而且代码的可读性也好。
分享到:
相关推荐
对于需重复查询的sql语句,可巧用with as 对sql语句进行精简,提高查询效率
### Oracle数据库中的START WITH 和 CONNECT BY 用法详解 在Oracle数据库中,处理层次结构数据时,`START WITH` 和 `CONNECT BY` 是非常有用的两个关键字。这些关键字可以帮助我们在查询时构建出树形或者层级结构的...
需要注意的是,由于文档的OCR识别问题,以上SQL语句中可能存在部分词汇错误或遗漏,具体操作时应结合实际环境进行调整。在实际应用中,还需关注安全性和性能优化,合理授权,确保数据库的安全稳定运行。
以上所述的操作都可以在SELECT语句中组合使用,形成复杂的查询语句。 #### 十三、连接查询 连接查询是指从两个或多个表中提取数据。 ##### 13.1 SQL92语法 使用`JOIN`关键字,例如:`SELECT * FROM table1 JOIN ...
综上所述,Oracle中的单条SQL语句可以通过各种高级功能实现复杂的查询逻辑,包括行列转换、处理重复值以及自定义合计函数等。这些技术的应用不仅能够提高查询效率,还能够简化数据处理流程,为企业提供更高效的数据...
`START WITH...CONNECT BY PRIOR`是Oracle SQL中的一个特性,用于处理具有层级关系的数据。这个子句允许我们遍历和查询具有父子关系的数据,例如部门和其下属子部门,或者员工和他们的上级经理。 1. **START WITH...
以上总结了Oracle到DB2迁移过程中常见的SQL语句差异。这些差异虽然看起来简单,但在实际应用中可能会导致很多问题。了解并掌握这些差异有助于开发人员更高效地进行数据库迁移工作,避免出现不必要的错误。在进行...
WITH CHECK OPTION 是 Oracle 中的一种视图定义选项,它可以确保数据库中正在修改的数据的完整性。该选项通常用在视图定义中,以确保任何引用该视图的 INSERT 或 UPDATE 语句都应用 WHERE 子句。 在 Oracle 中,...
-- 这里使用了两个嵌套的select语句,但`TOP`关键字在Oracle中不支持。 -- 同时,注释部分表示可能原本打算使用的列名和排序方式。 -- 该代码存在明显的逻辑错误和语法问题。 -- 优化建议 WITH cte AS ( SELECT *,...
本篇文章将深入探讨Oracle中的常用语法,分为Oracle SQL*PLUS基础、Oracle数据库基础、查询基础以及表及索引的定义操作四个主要部分。 **一、Oracle SQL*PLUS基础** SQL*PLUS是Oracle提供的一种命令行工具,用于与...
在这个例子中,`START WITH`语句定义了查询的起点,即根节点(ID为1的员工),`CONNECT BY`则指定了层次之间的连接条件(当前员工的ID等于其上级的ID)。 DB2虽然没有直接提供类似Oracle的`CONNECT_BY`功能,但可以...
- **子查询**:在查询语句中嵌套使用`select`语句,可以进行更复杂的逻辑处理。 #### 九、数据导出 - **完整数据库导出**:`exp userid=用户名/密码@实例名 file=文件路径 full=y log=日志文件路径`。 - **特定模式...
在Oracle中,存储过程是预先编译好的SQL语句集合,它可以接受参数、返回结果、包含流程控制和变量声明,类似于其他编程语言中的函数。存储过程的使用有以下几个主要优点: 1. **执行速度快**:由于存储过程在创建时...
这种方式较为复杂,一般不推荐在SQL语句中直接使用,更适合在Java代码中操作。 3. Oracle高级分页: Oracle 12c引入了窗口函数ROW_NUMBER(),可以更优雅地实现分页。例如: ```sql WITH data AS ( SELECT *, ROW_...
在Oracle数据库管理中,将表结构导出到Excel文件是一个常见的需求,这有助于数据分析、报告制作或数据共享。以下是一个详细的步骤指南,介绍如何完成这个任务。 首先,我们需要准备一个SQL查询来获取所需表的数据...
Oracle语句是数据库管理系统Oracle中的核心组成部分,用于执行各种数据操作和管理任务。本文将详细介绍Oracle的基本语句,包括连接管理、SQL执行、用户管理、表操作以及增删改查等基本操作。 1. **连接管理** - `...
在Oracle中,实现树状查询的核心在于使用`CONNECT BY`子句与`START WITH`子句。这两个子句共同作用,可以按照定义的层级关系遍历表中的记录,并按照树状结构进行排序和展示。 #### 1. `START WITH`子句 `START ...
为了展示树形结构,可以使用Oracle中的`START WITH`和`CONNECT BY PRIOR`语句。下面的查询将从根节点(名称为'ROOT')开始,递归地显示所有子节点。 ```sql SELECT ST.* FROM SCOTT_TREE ST START WITH ST.NAME = '...
### Oracle操作语句集锦详解 #### 一、Oracle 命令行工具与基本语法 **1. 启动 SQLPlus:** ```bash sqlplus /nolog ``` 此命令用于启动 SQLPlus 工具,不进行任何登录操作。 **2. 连接到数据库:** ```bash conn...