【发布时间】:2015-07-07 20:45:27
【问题描述】:
在以下示例中,我将 tbA.ID 传递给 tbC 查询。在这种情况下,我使用了 SqlServer 的 OUTER APPLY 运算符。
SELECT
...
FROM (SELECT ID FROM TableA ...) tbA
OUTER APPLY (SELECT ... FROM TableB tbB WHERE tbA.ID = tbB.ID) tbC
...
在 Oracle 中,我们没有 OUTER APPLY 运算符。那么,如何在不修改查询结构的情况下将左侧查询中的值(tbA.ID)传递到联接的右侧查询(tbC)?
Oracle 中是否有 OUTER APPLY 的替代方案?
【问题讨论】:
-
你们在tbc有top或者ordering吗?我们可以看到整个 tbc 吗?
-
您使用的是什么版本的 Oracle?如果您使用的是 12.1,Oracle 确实支持
outer apply。否则,您必须至少稍微更改查询结构以删除outer apply。在这种情况下,您不能只做一个left outer join,其中tbA.id = tbB.id是全部或部分连接条件吗? -
很遗憾,我无法更改查询的结构,因为它是 Microsoft Entity Framework 从 LINQ 查询生成的动态查询。我需要找到另一种方式...:/
-
EF 在 SQL 方面确实存在限制。这就是为什么,如果您需要执行高度自定义的查询或存储过程等,您不使用 EF
标签: sql-server oracle outer-apply