我遇到了一个查询
Select * from R Natural Outer Join S其中R=(A,B)有元组,{(1,2),(1,2),(3,4)}和S=(B,C)有元组{(2,5),(2,5),(4,6),(7,10)}。
为了实现这一点,我创建了两个名为R和S的关系。
create table R
(
A number(5),
B number(5)
)
create table S
(
B number(5),
C number(5)
)我把提供的元组插入其中。
现在,在实现这个过程中,我了解到我使用的数据库工具(Oracle)不支持“自然外部连接”,所以我使用了以下查询
select *
from R
natural full outer join S输出
2 1 5
2 1 5
2 1 5
2 1 5
4 3 6
7 10现在来问我的问题
因为在任何一个表中都没有定义主键,所以我认为它应该做交叉连接并显示16条记录,但事实并非如此。
如果有人能向我解释这种行为,那将是很有帮助的。
发布于 2011-10-18 04:06:10
对维基百科的快速检查没有提到“外部连接”是否意味着在省略此重要位时左、右或满。
实际上,
这意味着
在这种情况下,索引/键并不重要,也没有什么区别。
你得到的结果对标准是正确的
select *
from
R
full outer join
S ON R.B = S.B或
select *
from
R
full outer join
S USING (B)注意:并非所有RDBMS都支持所有语法:
自然连接无论如何都是危险的(所以链接)
https://dba.stackexchange.com/questions/6908
复制相似问题