我加入了一个oracle查询,看起来像:
FROM eiv.table1
eiv.table2 b
WHERE a.state_cd =
b.state_code(+)
(+)
到底是什么意思?
通过这个查询,我注意到,当记录在表中不匹配时,有时候我会得到一个空白区域。
这是左外连接还是右连接?如何简化这一点。
答案 0 :(得分:1)
SELECT *
FROM eiv.table1 a
LEFT JOIN
eiv.table2 b
ON b.state_code = a.state_cs
在9i
之前,Oracle
不支持ANSI
加入语法,而是使用了(+)
子句。
答案 1 :(得分:0)
这意味着它是一个左外连接......详细信息总是来自a,只有在满足条件时才会来自b ...
FROM eiv.table1 eiv.table2 b 在哪里a.state_cd = b.state_code(+)
=
来自evi.table1一个左连接eiv.tableb b on(a.state_cd = b.state_code)
您可能想要考虑在两个表上使用相同的列名称来表示状态代码,但这可能有点晚......
答案 2 :(得分:0)
http://www.adp-gmbh.ch/ora/sql/outer_join.html
“这可能是人们想要的或者它 也许不会。假设我们想要 返回所有数字,即使是德语 翻译缺失,我们需要一个 外连接。外连接使用(+) 在操作员一侧(在... 这种情况恰好是平等的 operator)我们想要有空值 如果没有值匹配则返回:
选择l.v“英语”,r.v 来自r,l的“德国人”,其中l.i
= r.i(+)和r.l(+)='de';这会为每个返回一行 英语单词,即使没有 德语翻译:
英语德语 -------------------- --------------------一二zwei三drei四 五“