* =在SQL中的WHERE子句中是什么意思?

时间:2013-07-03 04:30:08

标签: sql sql-server tsql

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

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.

3 个答案:

答案 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