2010-02-15 90 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语法进行内部连接。