2014-10-11 67 views
2

我正在研究自然连接,并且我很困惑,在SQL中编写时,如何知道是否应该使用叉积或自然连接。跨产品和natura加入之间的差异

+0

注意:mysql标签不合适。这个问题与特定的RDBMS – cornuz 2014-10-11 18:26:35

+0

@cornuz无关,我修复了标签 – 2014-10-11 18:31:47

+0

http://sqlfiddle.com/#!15/223f7/1 – 2014-10-11 18:35:58

回答

7

CROSS JOIN从两个表中创建所有可能的行对,不管它们是否匹配。对于交叉产品,您不使用任何联合条件,因为任何配对都会出现条件。

使用CROSS JOIN的示例:您有ShoeColors和ShoeSizes的表格,并且您想知道有多少种可能的组合。 SELECT COUNT(*) FROM ShoeColors CROSS JOIN ShoeSizes;

NATURAL JOIN就像一个INNER JOIN,但它假定的条件是平等,适用于出现两个表中的所有列名称。我从来没有使用NATURAL JOIN,因为我不能假定这只是因为列具有相同的名称,而应该是相关的。这需要一个非常严格的列命名约定,实际上没有真实世界的项目有这样的纪律。