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 条件のアスタリスクは、実際には の一部であり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 に答える