2
我正在研究自然连接,并且我很困惑,在SQL中编写时,如何知道是否应该使用叉积或自然连接。跨产品和natura加入之间的差异
我正在研究自然连接,并且我很困惑,在SQL中编写时,如何知道是否应该使用叉积或自然连接。跨产品和natura加入之间的差异
CROSS JOIN
从两个表中创建所有可能的行对,不管它们是否匹配。对于交叉产品,您不使用任何联合条件,因为任何配对都会出现条件。
使用CROSS JOIN
的示例:您有ShoeColors和ShoeSizes的表格,并且您想知道有多少种可能的组合。 SELECT COUNT(*) FROM ShoeColors CROSS JOIN ShoeSizes;
NATURAL JOIN
就像一个INNER JOIN
,但它假定的条件是平等,适用于出现两个表中的所有列名称。我从来没有使用NATURAL JOIN
,因为我不能假定这只是因为列具有相同的名称,而应该是相关的。这需要一个非常严格的列命名约定,实际上没有真实世界的项目有这样的纪律。
注意:mysql标签不合适。这个问题与特定的RDBMS – cornuz 2014-10-11 18:26:35
@cornuz无关,我修复了标签 – 2014-10-11 18:31:47
http://sqlfiddle.com/#!15/223f7/1 – 2014-10-11 18:35:58