当我使用oracle时出现此错误,但它在mysql中工作正常
left outer join
daybreak.contract_details expiring on
expiring.acd_id =
(select
max(lastexpire.acd_id)
from
daybreak.contract_details lastexpire
where lastexpire.acd_aad_id =acc_aad_id and
lastexpire.acd_itemization_tcd_code in ('IIN_5') and
lastexpire.acd_expiry_dt between to_date('2014-01-01','yyyy-mm-dd')
and to_date('2014-02-01','yyyy-mm-dd') and
lastexpire.acd_term > 0
)
感谢
答案 0 :(得分:1)
你究竟是什么问题?
您无法在Oracle中的外部联接的连接条件中指定子查询。这样做会导致ORA-1799错误。
尽管如此,几乎总是可以重写这样的查询。例如,您可以:
LATERAL
...想法是在内联视图中为每个可能的值获取子查询的值,然后将其外部连接到该视图。
在Oracle 12c中,您可以使用daybreak.contract_details.acd_id
内联视图来更快地执行该方法的变体。
另一种方法是外部联接到max()
的所有值,而不只是contract_details
值,然后过滤掉不是的任何值最大值,稍后在查询中(请记住,某些值可能为空(即,如果git tag -d 12345
git push origin :refs/tags/12345
中根本没有匹配)。