10

Sybase データベースへのクエリで *= 演算子を使用するコードを保守していますが、ドキュメントが見つかりません。*= の機能を知っている人はいますか? ある種の結合だと思います。

select * from a, b where a.id *= b.id

これが次のものとどう違うのかわかりません:

select * from a, b where a.id = b.id
4

5 に答える 5

14

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc34982_1500/html/mig_gde/mig_gde160.htmから:

内側テーブルと外側テーブル

外部表および内部表という用語は、外部結合における表の配置を表しています。

  • 左結合では、外側のテーブルと内側のテーブルはそれぞれ左と右のテーブルです。外部テーブルと内部テーブルは、それぞれ行保存テーブルと NULL 提供テーブルとも呼ばれます。

  • 右結合では、外側のテーブルと内側のテーブルはそれぞれ右と左のテーブルです。

たとえば、次のクエリでは、T1 が外部テーブルで、T2 が内部テーブルです。

  • T1 が T2 に参加
  • T2 右結合 T1

または、Transact-SQL 構文を使用します。

  • T1 *= T2
  • T2 =* T1
于 2008-09-02T21:11:33.190 に答える
9

これは外部結合を意味し、単純な = は内部結合を意味します。

*= is LEFT JOIN and =* is RIGHT JOIN.

(またはその逆、もう使っていないので忘れがちで、Google は *= を検索するときに役に立ちません)

于 2008-09-02T21:07:30.687 に答える
6

もちろん、次のように書く必要があります。

SELECT *
FROM a
LEFT JOIN b ON b.id=a.id

a,b 構文は悪です。

于 2008-09-02T21:17:54.453 に答える
5

ANSI-82 構文

select 
    * 
from 
    a
  , b 

where 
     a.id *= b.id

ANSI-92

select 
    * 
from 
   a
  left outer join b 
      on a.id = b.id
于 2008-09-02T21:19:37.740 に答える
1
select * from a, b where a.id = b.id

回答を返すには、行が b.id = a.id の場所に存在する必要があります

select * from a, b where a.id *= b.id

b に b.id = a.id の行がない場合、b の列を null で埋めます。

于 2008-09-02T21:18:47.557 に答える