T-SQL左连接符号

时间:2010-02-15 21:21:55

标签: tsql

进行左连接的符号(如* =)是什么? 我有表A和表B,即使表B中没有记录,也必须始终返回表A中的所有记录。

4 个答案:

答案 0 :(得分:5)

这是新的ansi标准语法,更清晰的imo。

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

答案 1 :(得分:3)

您不应该像was deprecated in Sql Server 2008那样使用该运算符,并且将在以后的版本中删除。

您应该使用ANSI兼容LEFT JOINLEFT OUTER JOIN

它被弃用是有原因的。该运算符的语法令人困惑(它与许多语言的“乘法和赋值”的标准重载相冲突)并且是非标准的。

答案 2 :(得分: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语法

答案 3 :(得分:0)

除此之外,使用ANSI标准语法LEFT [OUTER] JOIN进行连接可以简化查找错误,相信我。 它还允许更清楚地区分WHERE子句中的过滤器和连接操作数。 我建议也使用ANSI语法进行内连接。