Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

JOIN

2 つのテーブルのデータを基にテーブルを作成する SELECT 従属節です。

Synopsis

table1 [[AS] t-alias] CROSS JOIN table2 [[AS] t-alias] |

table1 [[AS] t-alias] , table2 [[AS] t-alias]

table1 [[AS] t-alias]
NATURAL [INNER] JOIN |
NATURAL LEFT [OUTER] JOIN |
NATURAL RIGHT [OUTER] JOIN |
table2 [[AS] t-alias] 

table1 [[AS] t-alias]
[INNER] JOIN |
LEFT [OUTER] JOIN |
RIGHT [OUTER] JOIN |
FULL [OUTER] JOIN
table2 [[AS] t-alias] 
ON condition-expression

table1 [[AS] t-alias]
[INNER] JOIN |
LEFT [OUTER] JOIN |
RIGHT [OUTER] JOIN |
table2 [[AS] t-alias] 
USING (identifier-commalist)

(上記の結合構文は SELECT 文の FROM 節で使用されます。その他のシンボル結合構文は、SELECT 文のその他の節で使用できます)。

概要

JOIN は、2 つのテーブルを組み合わせて、オプションの 1 つ以上の制限条件に従う結合テーブルを作成します。新規のテーブルのすべての行は、制限された条件を満たしている必要があります。JOIN は、テーブルのデータを別のテーブルのデータと結合する手段を提供し、レポートやクエリの定義に頻繁に使用されます。

結合の表示には、いくつかの構文形式があります。優先的に使用されるのは、FROM 節の一部として SELECT 文に明示的な JOIN 式を指定する形式です。FROM 節の JOIN 式には複数の JOIN を含めることができます。

Note:

Caché SQL では、SELECT 文の select-item リスト、WHERE 節、ORDER BY 節などで、矢印構文 (–>) を使用した暗黙結合もサポートされます。暗黙結合を指定するとテーブルで別のテーブルのフィールドとの左外部結合が実行され、明示的結合を指定すると 2 つのテーブルが結合されます。この暗黙結合構文は、明示的な結合構文の有効な代替としたり、明示的な結合構文と同じクエリ内に指定することができます。ただし、明示的な結合構文と矢印構文の結合には、いくつかの重要な制約があります。以下に、これらの制約の詳細を説明します。矢印構文の使用法の詳細は、"Caché SQL の使用法" の "暗黙結合" を参照してください。

Caché では、複雑な最適化アルゴリズムを使用して、複数の結合処理のパフォーマンスを最大限に高めます。テーブルは、必ずしも指定された順序で結合されるとは限りません。代わりに、SQL オプティマイザが、特に各テーブルのテーブル・チューニング・データに基づいてテーブル結合順序を決定します。したがって、テーブルを複雑な SQL クエリで使用する場合、事前にそのテーブルに対してテーブルのチューニングを実行することが重要です。クエリ最適化の詳細は、"SQL 最適化ガイド" の "クエリ・パフォーマンスの最適化" の章の “複数結合と暗黙結合のパフォーマンス” を参照してください。

ほとんどの場合、SQL オプティマイザの最適化方法で最適な結果が得られます。ただし、Caché では %FIRSTTABLE、%INORDER、%FULL などの結合の最適化キーワードも提供しています。これらを FROM キーワードの直後に使用して、特定のクエリの既定の最適化方法をオーバーライドできます。これらの最適化キーワードの詳細は、"FROM" 節のドキュメントの “クエリ最適化オプション” を参照してください。

JOIN の説明

Caché は、JOIN の複数の異なる構文形式をサポートします。しかし、これら複数の公式化は以下の 5 つの結合のタイプを参照します。

ANSI 結合構文 同等の構文
CROSS JOIN FROM 節での table1,table2 という記号表現 (コンマで区切られたテーブルのリスト) と同じです。
INNER JOIN JOIN と同じ。記号表現 : "=" (WHERE 節内)
LEFT OUTER JOIN LEFT JOIN と同じ。記号表現 : "=*" (WHERE 節内)。これはお勧めしません。新しいコードでは使用しないでください。矢印構文 (->) も左外部結合を実行します。
RIGHT OUTER JOIN RIGHT JOIN と同じ。記号表現 : "*=" (WHERE 節内)。これはお勧めしません。新しいコードでは使用しないでください。
FULL OUTER JOIN FULL JOIN と同じ。

指定がない限り、すべての結合構文は FROM 節で指定されます。

  • CROSS JOIN は最初のテーブルの行すべてを次のテーブルの行すべてと交差させる結合です。結果は、多くの重複データを持つ、大きな、論理的に総合的なテーブル (デカルト積) になります。通常、この結合はコンマで区切られたテーブルのリストを FROM 節内で指定し、その後 WHERE 節を使用して制限条件を指定することによって実行されます。%INORDER または %STARTTABLE 最適化キーワードは交差結合で使用することはできません。これを実行しようとすると、SQLCODE -34 エラーが返されます。結合の最適化キーワードの詳細は、"FROM" 節を参照してください。

  • INNER JOIN は、最初のテーブルの行を次のテーブルの行とリンクする結合です。最初のテーブルの行で、次のテーブル内に対応する行が見つからないものはリンクしません。

  • LEFT OUTER JOIN と RIGHT OUTER JOIN は機能上ほとんどの点で同一であり (構文が逆)、そのため、集合的に単方向外部結合と見なされる場合が多くあります。単方向外部結合は、最初のテーブル (ソース・テーブル) のすべての行を次のテーブルの行とリンクさせる結合です。最初のテーブルの行に一致する行が次のテーブルで見つからない場合でも、リンクは行われます。結果はテーブルで、最初のテーブル (ソース・テーブル) 内にあるフィールドの中には、NULL データと組み合わされるものもあります。

    単方向外部結合を指定する場合、FROM 節のテーブルを指名する順番が非常に重要です。LEFT OUTER JOIN では、最初に指定するテーブルが結合のソース・テーブルです。RIGHT OUTER JOIN では、2 つ目に指定するテーブルが結合のソース・テーブルです。

  • FULL OUTER JOIN は、2 つのテーブルに対して LEFT OUTER JOIN および RIGHT OUTER JOIN の両方を実行した結果を組み合わせる結合です。この結合には、最初または 2 番目のテーブルのいずれかで検出されたすべての行が含まれ、それぞれの側の不足した一致には NULL が埋め込まれます。

CROSS JOIN に関する考慮事項

JOIN キーワードの明示的な使用は、コンマ構文を使用した交差結合の指定より優先されます。したがって、Caché では t1,t2 JOIN t3t1,(t2 JOIN t3) と解釈されます。以前のバージョンの Caché では、この構文優先順位がサポートされていませんでした。結合構文は左から右に解析されていたため、t1,t2 JOIN t3(t1,t2) JOIN t3 と解釈されていました。左から右への解析を維持するには、この結合は t1 CROSS JOIN t2 JOIN t3 と再指定する必要があります。

ローカル・テーブルとゲートウェイ接続からリンクされる ODBC テーブルを使用する交差結合は実行できません。例えば、FROM Sample.Person,Mylink.Person を試みると、SQLCODE -161 エラー : “SQL 接続の参照は、サブクエリ全体を含む必要があります。” が発生します。この交差結合を実行するには、リンクされるテーブルをサブクエリとして指定する必要があります。例えば、FROM Sample.Person,(SELECT * FROM Mylink.Person) のように使用します。

NATURAL JOIN

NATURAL JOIN は、INNER JOIN、LEFT OUTER JOIN、または RIGHT OUTER JOIN の前に NATURAL キーワードを付けたものです。JOIN の前に NATURAL という語を付けると、2 つのテーブルで同じ名前を持つすべての列において結合が実行されます。NATURAL JOIN では、同じ名前を持つすべての列で自動的に等値条件が実行されるため、ON 節や USING 節を指定することはできません。これを実行しようとすると、SQLCODE -25 エラーが返されます。

NATURAL JOIN のどちらのオペランドでも、単純なベース・テーブル参照 (ビューやサブクエリではない) のみがサポートされます。

NATURAL JOIN は、JOIN 式内の最初の JOIN としてのみ指定することができます。

NATURAL JOIN では、同じ名前の列はマージされません。

FULL JOIN の前に NATURAL キーワードは記述できません。これを実行しようとすると、SQLCODE -94 エラーが返されます。

ON 節

INNER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN、または FULL OUTER JOIN には ON 節を指定できます。ON 節は、結合オペレーションによって返される値を制限する 1 つ以上の条件式を含みます。ON 節のある JOIN は、JOIN 式内のどこでも指定することができます。ON 節のある JOIN では、JOIN のどちらのオペランドにも、テーブル、ビュー、またはサブクエリを指定できます。

ON 節は 1 つ以上の条件式の述語で構成されている必要があります。これらの述語には、Caché SQL でサポートされている述語のほとんどが含まれます。ただし、コレクション述語を使用して結合操作を制限することはできません。Caché SQL のコレクション述語は、FOR SOME %ELEMENT%CONTAINS、および %CONTAINSTERM です。

AND、OR、および NOT 論理演算子を使用して、複数の条件式を関連付けることができます。AND は OR よりも優先します。括弧を使用して条件式を入れ子にしたり、グループ化したりすることもできます。括弧でグループ化していない場合、同じ論理演算子を使用した述語は厳密に左から右に実行されます。

ON 節には以下の制約があります。

  • ON 節のある JOIN では ANSI 結合キーワード構文のみ使用できます。

  • ON 節のある JOIN に NATURAL キーワードを接頭語として指定することはできません。これにより、SQLCODE -25 エラーが発生します。

  • ON 節のある JOIN に USING 節を指定することはできません。これにより、SQLCODE -25 エラーが発生します。

  • ON 節には =* or *= シンボル構文を含めることはできません。これにより、SQLCODE -68 エラーが発生します。

  • ON 節には矢印構文 (–>) を含めることはできません。これにより、SQLCODE -67 エラーが発生します。矢印構文の詳細は、"Caché SQL の使用法" の "暗黙結合" を参照してください。

  • ON 節は、ANSI キーワード JOIN オペレーションで明示的に指定されたテーブルのみを参照できます。FROM 節で指定されるその他のテーブルは、ON 節では参照できません。これにより、SQLCODE -23 エラーが発生します。

  • ON 節は、JOIN のオペランドに含まれる列のみを参照できます。複数の結合における構文優先順位が原因となって、ON 節が失敗する可能性があります。例えば、SELECT * FROM t1,t2 JOIN t3 ON t1.p1=t3.p3 というクエリは、t1 と t3 が結合のオペランドでないため失敗します。t1 は、t2 JOIN t3 の結果セットと結合します。構文を SELECT * FROM t1 CROSS JOIN t2 JOIN t3 ON t1.p1=t3.p3SELECT * FROM t2,t1 JOIN t3 ON t1.p1=t3.p3 のいずれに変更しても、このクエリは正常に実行されます。

  • ON 節のある OUTER JOIN の制限。テーブルに影響を与えるすべての条件で NULL 値を渡す可能性がある比較を使用しており、テーブル自体が外部結合のターゲットである場合は、SQLCODE -94 エラー : OUTER JOIN の使用はサポートされていませんが発生します。以下は、このタイプの不正な結合の LEFT OUTER JOIN の例です。

    SELECT *
    FROM Table1
       LEFT JOIN Table2 ON Table1.k = Table2.k
       LEFT JOIN Table3 ON COALESCE(Table1.k,Table2.k) = Table3.k

    FULL OUTER JOIN または RIGHT OUTER JOIN を使用した同様の例にも、この制限があります。

ON 節のインデックス作成

最適なパフォーマンスを得るために、ON 節にはインデックスを関連付ける必要があります (大部分の場合)。ON 節では、いくつかの結合条件のみを満たす既存のインデックスを使用できます。複数フィールドで条件を指定する ON 節では、添え字としてこれらのフィールドのサブセットのみを含むインデックスを使用して、結合を部分的に満たすことができます。Caché は、テーブルから直接残りのフィールドで結合条件をテストします。

ON 節で参照されているフィールドの照合タイプは、対応するインデックス内でのそのフィールドの照合タイプと一致する必要があります。照合タイプが一致していない場合は、インデックスは使用されない可能性があります。ただし、結合条件が %EXACT フィールド値に存在しており、照合されたフィールド値のインデックスのみ使用可能な場合、Caché はそのインデックスを使用して、正確な値であるかどうか確認する行を制限できます。照合タイプの一致の詳細は、“Caché SQL 最適化ガイド” の “インデックスの定義と構築” の章の “インデックス照合” を参照してください。

状況によっては、その前に %NOINDEX キーワードを置いて ON 節の条件でインデックスを使用しないようにするとよい場合があります。インデックスとパフォーマンスの詳細は、“Caché SQL 最適化ガイド” の “インデックス分析” と “インデックスの最適化オプション” を参照してください。

USING 節

INNER JOIN、LEFT OUTER JOIN、または RIGHT OUTER JOIN には USING 節を指定できます。USING 節のある JOIN のどちらのオペランドでも、単純なベース・テーブル参照 (ビューやサブクエリではない) のみがサポートされます。USING 節のある JOIN は、JOIN 式内の最初の JOIN としてのみ指定できます。USING 節のある JOIN に NATURAL キーワードを接頭語として付けたり、ON 節を指定することはできません。

USING 節では、1 つ以上の列名をコンマで区切ったリストを括弧で囲みます。括弧は必須です。重複する列名は無視されます。USING 節では、同じ名前の列はマージされません。

USING 節では、ON 節で表現される等値条件を簡潔に表現することができます。例えば、t1 INNER JOIN t2 USING (a,b)t1 INNER JOIN t2 ON t1.a=t2.a AND t1.b=t2.b と同じです。

単方向外部結合

Caché は、単方向外部結合の LEFT OUTER JOIN および RIGHT OUTER JOIN をサポートします。

標準の "内部" 結合では、あるテーブルの行が別のテーブルの行にリンクしている場合、後者のテーブルの行と対応しない前者のテーブルの行は、出力テーブルから除外されます。

単方向外部結合では、すべての行が一致しなくても、テーブルの行はすべて出力テーブルに含まれます。前者のテーブルは後者のテーブルから該当する情報を引き出しますが、後者のテーブルに一致する行がなくても、自分の行を犠牲にすることはありません。

例えば、クエリが Table 1 を最初にリストし、左外部結合を作成する場合、対応するレコードが Table 2 内に存在しなくても、Table 1 のすべての行を見ることができます。

単方向外部結合を指定する場合、FROM 節のテーブルを指名する順番が非常に重要です。左外部結合では、指定した最初のテーブルは結合のソース・テーブルです。右外部結合では、指定した 2 番目のテーブルが結合のソース・テーブルです。そのため、最適化キーワード %INORDER または %STARTTABLE は右外部結合で使用することはできません。次の構文は矛盾しており、 SQLCODE -34 エラー : FROM %INORDER table1 RIGHT OUTER JOIN table2 ON... が発生します。結合の最適化キーワードの詳細は、"FROM" 節を参照してください。

外部結合構文

Caché には、外部結合の表示に 3 種類の形式があります。

  1. ANSI 標準構文の LEFT OUTER JOIN と RIGHT OUTER JOIN。以下の例で示しているように、SQL 標準構文は WHERE 節ではなく、SELECT 文の FROM 節で外部結合を入力します。

    FROM tbl1 LEFT OUTER JOIN tbl2 ON (tbl1.key = tbl2.key) 
    
    
  2. エスケープ構文 {oj join-expression} を使用する、ODBC 仕様外部結合拡張構文 (join-expression は任意の ANSI 標準結合構文)。

  3. WHERE 節で A=*B などの条件を使用する、シンボル外部結合拡張構文。左外部結合は WHERE 節の = の場所で、=* などのシンボルを使用して指定されます 右外部結合は WHERE 節の = の場所で、*= などのシンボルを使用して指定されます。(これは、Microsoft SQL Server や Sybase で使用される構文とは逆であることに注意してください)。

    Note:

    シンボル外部結合構文 (=* および *=) は使用しないことを強くお勧めします。また、ON 節で使用することはできません。ANSI 標準構文の LEFT OUTER JOIN と RIGHT OUTER JOIN を使用してください。シンボル外部結合構文にはさらに、後述の制限があります。

3 種類の外部結合形式は互換性があり混在させることもできますが、ANSI 標準構文は ODBC と互換性のある唯一の構文である (また、最新の Microsoft 製品に移植可能である) ことから、可能な限り ANSI 標準構文を使用することを強くお勧めします。また、ANSI 標準構文では、シンボル構文で原則的に指定できない多くのオペレーションを指定することもできます。さらに、インターシステムズでは、古いシンボル外部結合構文で、新しい機能、拡張検証、オプティマイザの改善をサポートする予定はありません。

シンボル構文 (*=、=*) 外部結合の制限事項

WHERE 節内のシンボル外部結合構文では、以下のオペランド値を使用できます。

  • ベース・テーブルの列。外部結合のどちら側であっても、ベース・テーブルの列の指定に適用される制限はありません。ただし、シンボル外部結合構文のどちら側であっても、(substring(field1,4,3) のような) ベース・テーブルの列を使用した式は指定できません。ANSI 標準構文では式が許可されます。

  • ストリーム・ビューまたはサブクエリの列。ストリーム・ビューは、DISTINCT、GROUP BY、または UNION のキーワードを含むビュー、または集約関数を使用して生成された列を持つビューです。外部結合のどちら側であっても、ストリーム・ビューの列の指定に適用される制限はありません。

  • ストリーム化されていないビューまたはサブクエリの列を LEFT OUTER JOIN (=*) の左側または RIGHT OUTER JOIN (*=) の右側で使用する場合は、その列をベース・テーブル列に展開する必要があります。

  • LEFT OUTER JOIN (=*) の場合、右のオペランドに矢印構文を使用することはできません。WHERE a =* b->c などの構文はサポートされません。矢印構文は左のオペランドでサポートされています。

  • RIGHT OUTER JOIN (*=) の場合、左のオペランドに矢印構文を使用することはできません。WHERE a->b *= c などの構文はサポートされません。矢印構文は右のオペランドでサポートされています。

  • シンボル構文を使用する場合、複数の条件式は AND 論理演算子でのみ結合できます。OR および NOT の論理演算子は使用できません。

以下は、左外部結合でシンボル構文を使用した有効なクエリです。

SELECT a.Name,a.Age,b.Name
FROM Sample.Person AS a,Sample.Employee AS b 
WHERE a.Name =* b.Name AND a.Name %STARTSWITH 'G'

ANSI 標準の外部結合を指定した FROM 節とシンボル構文の外部結合を指定した WHERE 節をクエリに記述していて、これらの 2 つの結合が競合する場合は、内部結合が実行されます。ANSI 標準構文とシンボル構文の両方を同じクエリで使用しないことを強くお勧めします。

NULL の埋め込み

単方向外部結合では、NULL の埋め込みが実行されます。ソース・テーブルの行で、マージされる列に NULL 値が存在する場合は、ソースでないテーブルの対応するフィールドに NULL 値が返されます。

左外部結合条件は、以下の構文で表されます。

A LEFT OUTER JOIN B ON A.x=B.y

これは、A のすべての行が返されることを指定します。返された A の各行では、A.x=B.y などの B 行がある場合、対応するすべての B 値も返されます。

A.x=B.y などの B 行がない場合は、NULL の埋め込みによって A 行に対するすべての B 値を NULL として返すようにします。

例えば、患者に関する情報を格納した Patient テーブルがあり、このテーブルに患者の主治医の ID コードを示すフィールド Patient.DocID が含まれるとします。データベースには主治医がいない患者のレコードがあるため、このような患者のレコードでは Patient.DocID フィールドは NULL になります。ここで、Patient テーブルと Doctor テーブルの結合を実行して、患者名と対応する担当医師名のテーブルを生成します。

以下は INNER JOIN の例です。

SELECT Patient.PName,Doctor.DName
   FROM Patient INNER JOIN Doctor
   ON Patient.DocID=Doctor.DocID

INNER JOIN では、NULL の埋め込みは実行されません。そのため、対応する担当医師名のない患者名は返されません。

単方向外部結合では、NULL の埋め込みが実行されます。そのため、対応する担当医師名のない患者名では、Doctor.DName に NULL が返されます。

SELECT Patient.PName,Doctor.DName
   FROM Patient LEFT OUTER JOIN Doctor
   ON Patient.DocID=Doctor.DocID

演算の順序

必要な NULL の埋め込みも含んだ単方向外部結合条件は、他の条件より前に適用されます。したがって、NULL が埋め込まれた値では満たされない WHERE 節の条件 (例えば、B のフィールド上の値域条件や等値条件) は、A と B の単方向外部結合を標準結合 (内部結合) に効果的に変換します。

例えば、"Where Doctor.Age < 45" という句を、上記の 2 つの "Patient" テーブル・クエリに追加する場合、これらは同じになります。ただし、"WHERE Doctor.Age < 45 OR Doctor.Age IS NULL" という句を追加する場合は、2 つのクエリにおける相違は変わりません。

外部結合と内部結合の混合

Caché は、内部結合と外部結合の混在したすべての構文を任意の順序でサポートします。

複数結合と暗黙結合のパフォーマンス

既定では、クエリ・オプティマイザは、推定される最適な順番に複数の結合操作を順序付けます。これは、クエリで指定した結合シーケンスの順序と常に一致するわけではありません。%INORDER%FIRSTTABLE、または %STARTTABLE クエリ最適化オプションを FROM 節で指定して、テーブルを結合する順序を明示的に指定できます。

クエリ・オプティマイザはサブクエリの平坦化を実行して、特定のサブクエリを明示的結合に変換する場合があります。これによって、サブクエリの数が減ると、結合のパフォーマンスが格段に向上します。3 個以上のサブクエリがある場合は、サブクエリの平坦化によってパフォーマンスが少し低下することもあります。%NOFLATTEN クエリ最適化オプションを FROM 節で指定して、サブクエリの平坦化を実行しないように明示的に指定できます。

クエリ・オプティマイザは、サブクエリの平坦化を実行後のクエリ内の結合の合計数が 15 結合を超えない場合のみ、サブクエリの平坦化を実行します。暗黙結合や結合されたサブクエリを含む、15 を超える結合を指定すると、クエリ・パフォーマンスが大幅に低下する場合があります。

以下の例は、Table 1 と Table 2 で実行される JOIN 操作の結果を示しています。

     Table1                Table2
Column1  Column2      Column1  Column3
  aaa      bbb          ggg      hhh
  ccc      ccc          xxx      zzz
  xxx      yyy
  hhh      zzz

CROSS JOIN の例

以下に例を示します。

SELECT * FROM Table1 CROSS JOIN Table2

以下のテーブルを作成します。

Column1  Column2  Column1  Column3
  aaa      bbb      ggg      hhh
  aaa      bbb      xxx      zzz
  ccc      ccc      ggg      hhh
  ccc      ccc      xxx      zzz
  xxx      yyy      ggg      hhh
  xxx      yyy      xxx      zzz
  hhh      zzz      ggg      hhh
  hhh      zzz      xxx      zzz

NATURAL JOIN の例

以下に例を示します。

SELECT * FROM Table1 NATURAL JOIN Table2

以下のテーブルを作成します。

Column1  Column2  Column1  Column3
  xxx      yyy      xxx      zzz

NATURAL JOIN を実行する場合、Caché は同じ名前を持つ列を統合しません。

ON 節のある INNER JOIN の例

以下に例を示します。

SELECT * FROM Table1 INNER JOIN Table2
     ON Table1.Column1=Table2.Column3

以下のテーブルを作成します。

Column1  Column2  Column1  Column3
  hhh      zzz      ggg      hhh

USING 節のある INNER JOIN の例

以下に例を示します。

SELECT * FROM Table1 INNER JOIN Table2
  USING (Column1)

以下のテーブルを作成します。

Column1  Column2  Column1  Column3
  xxx      yyy      xxx      zzz 

USING 節を実行する場合、Caché は同じ名前を持つ列を統合しません。

LEFT OUTER JOIN の例

以下に例を示します。

SELECT * FROM Table1 LEFT OUTER JOIN Table2
  ON Table1.Column1=Table2.Column3

以下のテーブルを作成します。

Column1  Column2  Column1  Column3 
  aaa      bbb      null     null
  ccc      ccc      null     null
  xxx      yyy      null     null
  hhh      zzz      ggg      hhh

RIGHT OUTER JOIN の例

以下に例を示します。

SELECT * FROM Table1 RIGHT OUTER JOIN Table2
     ON Table1.Column1=Table2.Column3

以下のテーブルを作成します。

Column1  Column2  Column1  Column3
  hhh      zzz      ggg      hhh
  null     null     xxx      zzz

FULL OUTER JOIN の例

以下に例を示します。

SELECT * FROM Table1 FULL OUTER JOIN Table2
  ON Table1.Column1=Table2.Column3

以下のテーブルを作成します。

Column1  Column2  Column1  Column3 
  aaa      bbb      null     null
  ccc      ccc      null     null
  xxx      yyy      null     null
  hhh      zzz      ggg      hhh
  null     null     xxx      zzz

関連項目

FeedbackOpens in a new tab