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