2012-08-19 65 views
3

可能重複:
Difference between Inner Join & Full join差異INNER JOIN和笛卡爾在SQL Server中加入

是這兩者之間的區別是什麼,尤其是在SQL Server 2008中 -

select * from table1 t1, table2 t2 where t1.col1 = t2.col1 

AND

select * from table1 t1 INNER JOIN table2 t2 ON t1.col1 = t2.col1 
+0

優化程序沒有什麼區別 - 第一個使用ANSI-89連接語法,第二個使用首選的ANSI-92語法。我個人在任何可能的情況下都會清除ANSI-89語法,然後在各種社交媒體上找出罪魁禍首=) – 2012-08-19 21:01:53

+0

第二個將不起作用,因爲你的where是爲了打開? – Ben 2012-08-19 21:03:29

+0

@Ben:你說的對,我修正了它 – 2012-08-19 21:04:05

回答

1

第一種是寫入內部連接的舊方法,第二種是在將join命令添加到SQL之後寫入的方式。

只要這兩種方式都被接受,結果就完全沒有區別。這兩個查詢的執行計劃將是相同的。

編寫聯接的舊方法正在逐步淘汰,並且可能會在SQL Server的更高版本的某些模式下被禁止。它不在SQL Server 2008中。

2

它們是相同的。

但是考慮一下你的語法是什麼樣子,如果你想做一個INNER JOIN,然後OUTER JOIN到一個不同的表。

遵循INNER JOIN語法更加一致,所以如果您以後需要修改SQL,則更容易。另外,一致性允許其他人更好地瞭解你的意圖。

+0

Thx爲答覆。 這兩個查詢給了我不同的輸出。實際的行輸出是相同的,但是第一個查詢多次給了我同一行結果(該數字等於表中的行) 然後我被某人告知使用第二個版本。我來自PL/SQL bkgrd並且是SQL Server的新成員,並不知道我可以用這種方式使用它。 – cherry 2012-08-19 22:38:39