2012-10-19 20 views
3
A B C D 
1 3 3 3 
3 3 

结果是很显然,自然结合如果我自然地加入这两张表,为什么结果是什么? (基本上,请说明)

A B C D 
1 3 3 3 
3 3 3 3 

这是为什么之后?我认为在这两种情况下,自然连接要求有相似的属性?第一个表中甚至没有C或D属性,所以它们如何加入?

例如,我们的教授说这两个连接,因为对于第一个结果行,C是相同的,第二个是相同的。

A B C C D 
1 2 3 3 1 
4 5 6 6 2 
7 8 9 

或者他们只是正常合并?如果在第二个表格中有6 2之后有2 1,那么合并将如何出现?

回答

1

交叉连接不需要任何形式的匹配条件 - 中集A的每一行与每一中集B.匹配

其他类型的连接(INNEROUTERLEFTRIGHT)所有比赛在一般情况下更受限制(即“仅将一行集合A与一行集合B iff(当且仅当)集合A的C列中的值与集合中的C列中的值相匹配B“)。

但是,你可以做出这样通过简单地使条件总是是真实有效CROSS加入联接:

SELECT * 
FROM SetA 
LEFT INNER JOIN SetB 
    ON 1 = 1 -- Voila, instant cross join 
1

在你的第一个例子是没有公共字段加入的,所以它简单地返回两个表的所有可能的组合。

由于您的第二组有一个共同的领域,那么结果集将被过滤到:

A B C D 
1 2 3 1 
4 5 6 2