4

有人问我以下查询的输出。

Select      *    
from        TableA t1, TableB t2
where       t1.Id *= t2.Id

谁能解释我,如果存在这种类型的任何查询,如果存在,那么它是如何工作的。因为我从未见过这种类型的查询谢谢。
更新:
此外,当我在 SQL Server 中运行此查询时,我得到了这个;

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.
4

3 回答 3

5

在 a 中使用星号WHERE是 ing 表的旧non-ANSI兼容语法OUTER JOIN,因此不应再使用。

这是链接

于 2013-07-03T04:34:39.003 回答
4

where 条件中的星号实际上是 a 的一部分non-ANSI outer join operator,它用于定义隐式外连接。

由于该运算符自 1992 年以来已过时,因此它将在现代数据库中造成麻烦。

基本上以下是相同的:

  SELECT * FROM TableA LEFT OUTER JOIN TableB ON t1.Id = t2.Id

  SELECT * FROM TableA , TableB WHERE t1.Name *= t2.Name
于 2013-07-03T04:35:56.873 回答
3

运营商的*=意思LEFT OUTER JOIN

于 2013-07-03T04:31:47.670 回答