交叉应用缺少的关键字

Posted

技术标签:

【中文标题】交叉应用缺少的关键字【英文标题】:Cross apply missing keyword 【发布时间】:2018-11-17 07:05:49 【问题描述】:

我正在 Oracle(11g) 中编写查询:

  select DBTM,AVNR from E_MW_01Min_MIT m
  cross apply(
        select Avnr,XDatum1 from E_MW_01DAY_MEX d
        where  d.AVnr = m.avnr
        and    d.XDatum1 = m.DBTM 
   )

但它给了我错误

   ORA-00905: missing keyword

问题出在哪里? 谢谢

【问题讨论】:

您使用的是哪个版本的 Oracle? 从 v.12c 开始,Oracle 支持 OUTER APPLY/CROSS APPLY 构造 【参考方案1】:

Oracle 12c 版本引入了这个关键字(CROSS APPLY 或 OUTER APPLY)。 你可以看到这个链接: cross apply giving missing keyword error

【讨论】:

【参考方案2】:

cross apply 在该版本的 Oracle 中不可用。只需改用join

select m.DBTM, d.AVNR
from E_MW_01Min_MIT m JOIN
     E_MW_01DAY_MEX d
     ON  d.AVnr = m.avnr AND d.XDatum1 = m.DBTM ;

这实际上使用JOIN 更容易表达,所以我认为尝试APPLY 没有任何好处,即使数据库确实支持它。

【讨论】:

以上是关于交叉应用缺少的关键字的主要内容,如果未能解决你的问题,请参考以下文章

苹果手机出现logintype为必要参数

“在 AndroidManifest.xml:11:5-64 的元素包上缺少‘包’关键属性”

查询条件缺少具有二级索引字段的关键架构元素

SQL 错误:缺少关键字?

甲骨文。使用 case 语句时缺少关键字。错误 00905

ORA-00905: TOAD 中缺少关键字