有人问我以下查询的输出。
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.
答案 0 :(得分:4)
在WHERE
中使用星号是non-ANSI
符合旧OUTER JOIN
的语法,因此不应再使用。
这是link。
答案 1 :(得分:3)
where条件中的星号实际上是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
答案 2 :(得分:2)
*=
运算符表示LEFT OUTER JOIN
。