2014-10-11 58 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,因爲我不能假定這只是因爲列具有相同的名稱,而應該是相關的。這需要一個非常嚴格的列命名約定,實際上沒有真實世界的項目有這樣的紀律。