Oracle query to Aurora MySQL 5.7



我试图将Oracle JOIN查询转换为Aurora MySQL,但获得(+)操作符的语法问题。能否提供一些建议或提供正确的语法查询。

我的Oracle查询的连接如下:

select ...
from table1 A, table2 B
WHERE A.PLACE_TYP_CD = 'AREA'
AND A.EFF_DT <= SYSDATE
AND A.EXP_DT >= SYSDATE
AND  A.PLACE_ID = B.CHILD_LOCN_ID(+)
AND B.LINK_REASON_TYP(+) = 'CONTAINS'
AND B.EFF_DT(+) <= SYSDATE
AND B.EXP_DT(+) >= SYSDATE

A和B是表名的别名。

我得到错误提示:

数据库错误码:1064。消息:你有一个错误在你的SQL语法;查看对应于MySQL服务器版本的手册,以获得正确的语法来使用near ') AND B.LINK_REASON_TYP(+) = 'CONTAINS' AND B.EFF_DT(+) <= SYSDATE AND B.E' at line…

谢谢。

(+)是Oracle的旧的用于执行外部连接的专有语法。SQL 99标准引入了一个指定外部连接的标准,在过去的15年里编写的任何东西都应该使用这个标准。

这应该可以在任何最近的Oracle版本中工作。

select ...
from table1 A
left outer join table2 B
on( A.PLACE_ID = B.CHILD_LOCN_ID
AND B.LINK_REASON_TYP = 'CONTAINS'
AND B.EFF_DT <= SYSDATE
AND B.EXP_DT >= SYSDATE )
WHERE A.PLACE_TYP_CD = 'AREA'
AND A.EFF_DT <= SYSDATE
AND A.EXP_DT >= SYSDATE

如果你正在转换到MySQL,你想要用current_timestampcurrent_date替换sysdate取决于你是如何将列数据类型从Oracle转换到MySQL。

最新更新