oracle – 子查询中的公用表表达式
我请求帮助理解来自Oracle,DB2,Sybase的所有RDBMS在子查询中支持公共表表达式(CTE).我知道PostgreSQL会这样做,而MS SQL Server却没有.
SELECT a.*,b.* FROM (WHERE aa as ( <<select_query>),SELECT * FROM aa WHERE <<criteria>> ) as a LEFT JOIN ( WITH bb as ( <<select_query> ),select * from bb inner join tbl_c on <<innerjoin>> where <<criteria>> ) as b on <<join_expr>> 我无法在子查询之外定义with子句 – 两个查询都是动态生成的w.r.t.列,标准,安全性等
例如,这适用于Oracle: SELECT a.*,b.* FROM (WITH aa AS ( SELECT LEVEL l1,mod(level,5) m1 FROM dual CONNECT BY LEVEL < 50 ) SELECT * FROM aa WHERE m1 < 3) a LEFT JOIN (WITH bb AS ( SELECT LEVEL l2,5) m2 FROM dual CONNECT BY LEVEL < 50 ) SELECT * FROM bb WHERE m2 BETWEEN 1 AND 4) b ON a.l1 = b.l2; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |