-2

我有一个问题,也许我的搜索技能不够,所以请随时关闭它并指出我的问题的副本。

Oracle 11g 如何解决不明确的左连接?模棱两可的意思是假设左连接将连接表上的两行与源表上的一行相匹配。将加入哪一行?它是确定性的吗?如果是这样,歧义解决规则是什么?

提前致谢!

4

2 回答 2

2

没有歧义。基本上,行会根据需要重复:

create table a(
  a_id number,
  a_name varchar2(10)
);

create table b(
  b_id number,
  b_name varchar2(10)
);

insert into a (a_id, a_name) values (1, 'A');
insert into a (a_id, a_name) values (2, 'B');
insert into a (a_id, a_name) values (3, 'C');

insert into b (b_id, b_name) values (1, 'X');
insert into b (b_id, b_name) values (1, 'Y');
insert into b (b_id, b_name) values (2, 'Z');

select *
from a
left join b on a.a_id=b.b_id
order by a.a_id, a.a_name, b.b_id, b.b_name
A_ID   A_NAME B_ID   B_NAME
1      A      1      X
1      A      1      Y
2      B      2      Z
3      C      (null) (null)

您可以将左连接视为带有过滤器的一般交叉连接。

于 2013-03-25T15:21:22.103 回答
2

如果一个连接条件匹配多行,无论它是内连接还是外连接,所有这些行都将出现在结果集中。对于左(外)连接,如果未找到匹配项,则其字段将为空。

于 2013-03-25T15:09:37.697 回答