交叉产品和自然连接之间的区别

时间:2014-10-11 18:16:35

标签: sql cross-join natural-join

我正在研究自然联接,我很困惑,在用SQL编写时,我怎么知道我应该使用交叉产品还是自然连接。

2 个答案:

答案 0 :(得分:7)

CROSS JOIN创建两个表中所有可能的行对,无论它们是否匹配。您不能对交叉产品使用任何连接条件,因为任何配对的条件总是如此。

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

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

答案 1 :(得分:0)

简单来说,交叉联接在两个不同表的行之间执行了笛卡尔积。.其中列名可能匹配也可能不匹配……但自然联接是为了执行联接而必须执行的两个表的操作列名称必须匹配