2010-02-15 143 views

回答

3

您不應該使用該運算符,因爲它的was deprecated in Sql Server 2008,並且將在未來的版本。

您應該使用符合ANSI標準的LEFT JOINLEFT OUTER JOIN

它被棄用的原因。該運算符的語法很混亂(它與許多語言的「multiply and assign」的標準超載相沖突)並且是非標準的。

5

這是新的ansi標準語法,更加清晰imo。

SELECT * 
FROM A 
LEFT OUTER JOIN B 
ON A.ID = B.ID 
0

避免任何古老的語法。重寫它包括新的 「LEFT OUTER JOIN」 和/或 「RIGHT OUTER JOIN」 語法:

SELECT 
    a.*, B.* 
    FROM TableA     a 
     LEFT OUTER JOIN TableB b ON a.id=b.id 

Difference between * = and LEFT Outer Join
從鏈接:

在早期版本的Microsoft®SQL 的SERVERT 2000,左右外部 連接條件被指定在 WHERE子句中使用*==* 運算符。在某些情況下,該語法 會導致模糊的查詢,可能會以多種方式解釋該查詢。 符合SQL-92的外連接在FROM子句中指定的 ,並且執行 不會導致此歧義。因爲 SQL-92語法更加精確,因此 舊版Transact-SQL外連接語法中使用的 WHERE子句不包括在 此發行版中。未來版本的SQL 服務器支持的語法可能不是 。使用 Transact-SQL外的任何語句聯接應 改爲使用SQL-92語法

0

除此之外的是,使用ANSI標準語法LEFT [OUTER] JOIN的用於連接簡化了查找錯誤很多,相信我。 它還允許在WHERE子句中的過濾器和連接操作數之間有更明確的區分。 我會建議也使用ANSI語法進行內部連接。