2013-06-22 22 views
0

我想知道在FROM子句中,有連接的查詢和有多個表的查詢之間的區別。SQL表組合方法

例如:

SELECT * 
FROM table1 NATURAL JOIN table2. 

SELECT * 
FROM table1, table2 
WHERE table1.field=table2.field. 

太謝謝你了。

+1

一個是顯式連接,而另一個是隱式連接 - 請參見[這個問題](http://stackoverflow.com/問題/ 44917 /明確-VS隱-SQL聯接)。 –

回答

1

NATURAL JOIN比較兩個表的所有列,並等於那些具有相同名稱和相同類型的列。

因此,基本上,只有當table1table2只有一列具有相同的名稱和類型,並且該列爲field時,這兩個SQL語句纔會執行相同的操作。

+0

感謝它非常澄清! – user1966562

0

SQL JOIN子句用於根據兩個或多個表之間的公用字段合併行。

最常見的連接類型是:SQL INNER JOIN(簡單連接)。 SQL INNER JOIN返回滿足連接條件的多個表中的所有行。

你也可以使用WHERE,但是與JOIN合乎邏輯。針對特定條件使用WHERE。

0

通常情況下,沒有任何區別,數據庫翻譯成相同的執行計劃。

兩個區別是:

  • 連接語法允許你做外連接,
  • 連接語法允許您使用「天然」和「使用」,而他們又將合併兩個輸入列到一個輸出列(所以你的第一個查詢將有一列少於第二個)