簡體   English   中英

為什么子查詢在DB2的ON子句中不起作用

[英]Why subquery doesn't work in ON clause in DB2

為什么這個簡單的查詢在oracle中可以正常工作,而在DB2中卻不起作用:

select * 
from 
sysibm.dual d1 
left join sysibm.dual d2 on 1=1 and exists (select 1 from sysibm.dual)

將涉及子查詢的條件移到where子句可能會有所幫助,但這將限制外部聯接進入內部。

當我嘗試運行查詢時,出現-338錯誤 ,根據信息中心(請參閱鏈接),對ON子句有以下限制:

由於以下原因之一,與JOIN運算符或MERGE語句關聯的ON子句無效。

 * The ON clause cannot include any subqueries. * Column references in an ON clause must only reference columns of tables that are in the scope of the ON clause. * Scalar fullselects are not allowed in the expressions of an ON clause. * A function referenced in an ON clause of a full outer join must be deterministic and have no external action. * A dereference operation (->) cannot be used. * A SQL function or SQL method cannot be used. * The ON clause cannot include an XMLQUERY or XMLEXISTS expression. 

我不確定查詢是否可行,但您認為也許可以重新編寫如下代碼:

select * 
from 
sysibm.dual d1 
left join (
    SELECT dl.*,
    CASE WHEN EXISTS (SELECT 1 FROM sysibm.dual)
         THEN 1
         ELSE 0
    END AS jn
    FROM sysibm.dual dl
) D2
  on 1=1 and 1=d2.jn

這在DB2 V10.1中有效! 沒有安裝修訂包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM