TSQL中WHERE子句中的*=是什么意思?
有人问我下面查询的输出TSQL中WHERE子句中的*=是什么意思?,sql,sql-server,tsql,Sql,Sql Server,Tsql,有人问我下面查询的输出 Select * from TableA t1, TableB t2 where t1.Id *= t2.Id 有谁能解释一下,如果存在这种类型的查询,如果存在,那么它是如何工作的。因为我从未见过这种类型的查询,谢谢。 更新: 同样,当我在SQLServer中运行这个查询时,我得到了这个结果 The query uses non-ANSI outer join operators ("*=" or "=*"). To ru
Select *
from TableA t1, TableB t2
where t1.Id *= t2.Id
有谁能解释一下,如果存在这种类型的查询,如果存在,那么它是如何工作的。因为我从未见过这种类型的查询,谢谢。更新:
同样,当我在SQLServer中运行这个查询时,我得到了这个结果
The query uses non-ANSI outer join operators ("*=" or "=*").
To run this query without modification, please set the compatibility level
for current database to 80, using the SET COMPATIBILITY_LEVEL option
of ALTER DATABASE.
It is strongly recommended to rewrite the query using ANSI outer join
operators (LEFT OUTER JOIN, RIGHT OUTER JOIN).
In the future versions of SQL Server, non-ANSI join operators will
not be supported even in backward-compatibility modes.
*=
运算符表示在中使用星号的左外部联接
,其中
是外部联接
的一种旧的非ANSI
兼容语法,因此不应再使用
以下是where条件中的星号,它实际上是非ANSI外部联接运算符的一部分,用于定义隐式外部联接 这将给现代数据库带来麻烦,因为该操作员自1992年以来就已过时 以下内容基本相同:
SELECT * FROM TableA LEFT OUTER JOIN TableB ON t1.Id = t2.Id
SELECT * FROM TableA , TableB WHERE t1.Name *= t2.Name