在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常用命令 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup ...
ORACLE用户是学习ORACLE数据库中的基础知识,下面就介绍下类系统常用的默认ORACLE用户: 1. sys用户:超级用户,完全是个SYSDBA(管理数据库的人)。拥有dba,sysdba,sysoper等角色或权限。是oracle权限最高的用户,...
概述:在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用。 create user 用户名 identified by 密码; 2.给用户修改密码 概述:如果给自己修改密码可以直接使用 sql>...
subquery :一条完整的SELECT语句,可以在该语句中定义别名; WITH CHECK OPTION :插入或修改的数据行必须满足视图定义的约束; WITH READ ONLY :默认可以通过视图对基表执行增删改操作,但是有很多在基表上的...
系统级的环境变量一般在/etc/profile 文件中定义 在 CAMS 系统 与数据库 相关的环境变量就定义在/etc/profile 文件中 如下所示 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/...
当查询中多次用到某一部分时,可以用Oracle with语句创建一个公共临时表。因为子查询在内存临时表中,避免了重复解析,所以执行效率会提高不少。临时表在一次查询结束自动清除。 一般语法格式: 代码如下:with ...
因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引) 14、说明:前10条记录 select top 10 * form table...
with tmp_t as( select 1 as id,'测试4321_CS' as name from dual union all select 2,'测试 1200(测试版)' from dual union all select 3,'测试123(测试版)' from dual union all select 4,'测试 1212(D2)...
7.如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用Select语句。 8.使用Describe命令可以显示表的结构信息。 9.使用SQL*Plus的Get命令可以将文件检索到缓冲区,并且不执行。 10.使用Save命令可以将...
20.oracle8中扩充了group by rollup和cube的操作。有时候省了你好多功夫的。 下面的语句可以进行总计 select region_code,count(*) from aicbs.acc_woff_notify group by rollup(region_code); <2> 对第1个字段...
数据库操作语句大全(sql) 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_...
Oracle基本语句 1 进入界面 在cmd里面进入oracle的sqlplus界面:sqlplus scott/orcl@orcl 2 连接管理 连接命令 conn[ect] sys/orcl@orcl as sysdba 断开连接 disc[onnect] 修改密码 psssw[ord] ...
经典SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice ...
那么,现在如果给出一个权限编号,要去检索出用后这个权限...select a,b,c from(with test as (select ‘aaa’ a,’bbb’ b,’1,2,3′ c from dual)select a,b,substr(t.ca,instr(t.ca, ‘,’, 1, c.lv) + 1,instr(t.ca
创建MAPINFO_MAPCATALOG表的sql语句如下: Create Table MAPINFO_MAPCATALOG ( SPATIALTYPE Float, TABLENAME Char(32), OWNERNAME Char(32), SPATIALCOLUMN Char(32), DB_X_LL Float, DB_Y_LL Float, DB_X_UR ...
要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>sqlplus SQL>connect internal SQL>startup SQL>quit b、关闭ORACLE系统 oracle>sqlplus SQL>connect internal ...
保存在oracle数据库中的所有操作细节: spool oracleday01.txt :开始记录 spool off :开始保存细节 四、SELECT语句:选择操作、投影操作。 select:从一个或多个表中检索一个或多个数据列。包含信息:想选择...
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式" set rs=conn.excute(sql) 用 rs("别名") 获取统的计值,其它函数运用同上。 (5) 数据表的建立和删除: CREATE TABLE 数据表名称(字段1 类型1...
elizabeth o'neil is a professor of computer science at the university of massachusetts at boston.she serves as a comsult-ant to sybase iqin concor, massachusetts,and has worked with a number of ...