我在一个应该从Oracle外连接语法移植到sql标准外连接语法的查询中看到以下内容:
SELECT ... FROM A,B,C,D,E WHERE A.A_ID = B.A_ID AND B.B_ID = C.A_ID(+) AND B.B_KEY = C.B_KEY(+) AND C.C_ID = D.C_ID(+) AND B.A_ID = E.A_ID(+) AND B.B_KEY = E.B_KEY(+) AND 'CONSTANT' = C.X_ID(+)
现在翻译外连接语法通常是一个非常机械的过程,但最后一行让我感到困惑.这是什么意思?它有什么影响?
我试图执行机械过程.我希望我记得它.
原文链接:https://www.f2er.com/oracle/205351.html这导致:
SELECT ... FROM A join B on A.A_ID = B.A_ID left join C on B.B_ID = C.A_ID and B.B_KEY = C.B_KEY and 'CONSTANT' = C.X_ID left join D on C.C_ID = D.C_ID left join E on B.A_ID = E.A_ID and B.B_KEY = E.B_KEY
总之,我认为Leigh Riffel的答案是正确的.
注意
在过去,记忆的规则是:oracle其中A.a = B.b()在sql-Server旧语法中成为A.a * = B.b加上相反的一方并成为一个星,这意味着A.a = B.b上的左连接B.