sql中with用法

下面是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 短语,则只要执行一次

猜你喜欢

转载自logking2340.iteye.com/blog/2155731