进行左连接的符号(如* =)是什么? 我有表A和表B,即使表B中没有记录,也必须始终返回表A中的所有记录。
答案 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 JOIN
或LEFT 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语法进行内连接。