下面是with使用的一个实例:
--使用with定义基础表 WITH RES_USER AS (SELECT VU.USER_ID,VU.NAME FROM USER_TABLE VU),RES_ORG AS(SELECT VO.ORG_ID,VO.NAME FROM ORG_TABLE VO) SELECT T.* , (SELECT NAME FROM RES_USER U WHERE U.USER_ID=T.useId) uName, (SELECT NAME FROM RES_ORG O WHERE O.ORG_ID=T.orgId) oName FROM TABLE_NAME_2 T where T.ID=''
with用法在作为基础表的时候很方便从一个表中选取不同的结果,将公用的结果放在内存中,整体来说还是降低内存的消耗。
with通常与AS连用,也叫做子查询部分。用法如下:
1.用来定义一个sql片段,该片段会被整改sql语句所用到:
WITH RES_USER AS (SELECT VU.USER_ID,VU.NAME FROM USER_TABLE VU)
2.可以使sql语句的可读性更高
3.也有可能在UNION ALL的不同部分,作为提供数据的部分。特别对于UNION ALL比较有用。因为UNION ALL的每个部分可能相同,但是如果
每个部分都执行一次则成本太高,所以使用WITH AS 短语,则只要执行一次