我试图弄清楚具有这种结构的Oracle SQL查询:
select * from A, B, C
where
A.Col1 = B.Col1(+) and
C.Col1= A.Col1 (+)
我不习惯不推荐使用的(+)语法,所以如果有人能提供查询的ANSI翻译,我会感到沮丧。或用文字解释。
修改
Polppan的回答可能是正确的。我不确定(似乎也不是),因为我无法以某种方式验证它,仍然不完全理解(+)语法。以下查询似乎等同于Polppan的答案,对我而言,由于保留了连接的顺序,因此将其映射到第一个查询更容易:
SELECT *
FROM A
LEFT JOIN B ON A.Col1 = B.Col1
RIGHT JOIN C ON C.Col1 = A.Col1
如果其他人可以提供提供ANSI翻译的答案以及解释,我很乐意将其作为答案,以避免目前的不确定性。
答案 0 :(得分:4)
您可以使用以下ANSI查询,根据您的意愿更改选择列。
SELECT *
FROM C
LEFT OUTER JOIN A
ON C.Col1 = A.Col2
LEFT OUTER JOIN B
ON A.Col1 = B.Col1
This文章雄辩地解释了sql joins
。