【Oracle SQL*Plus】テーブル結合(FULL OUTER JOIN)【備忘録】

雑学

備忘録になります。

以下の2つのテーブルを結合します。

SQL> SELECT * FROM TEST_TABLE;

 ID,NAME  ,VAL1,VAL2
---,------,----,----
  1,NAME-A,   1,A
  2,NAME-B,   2,B
  3,NAME-C,   3,C
  4,NAME-D,   4,D
  5,NAME-E,   5,E

SQL> SELECT * FROM TEST_TABLE2;

 ID,NAME  ,VAL1,VAL2
---,------,----,----
  1,NAME-A,  11,AA
  2,NAME-B,  12,AB
  3,NAME-C,  13,AC
  6,NAME-F,  16,AF
  7,NAME-G,  17,AG

この2つのテーブルのIDとNAMEを紐づけて結合します。結合条件を満たさないレコードを全て残す場合「FULL OUTER JOIN」を使います。結合されない右テーブルの内容はNULLが入ります。

SQL> SELECT * FROM TEST_TABLE A
   2 FULL OUTER JOIN TEST_TABLE2 B
   3 ON  A.ID = B.ID
   4 AND A.NAME = B.NAME;

 ID,NAME  ,VAL1,VAL2, ID,NAME  ,VAL1,VAL2
---,------,----,----,---,------,----,----
  1,NAME-A,   1,A   ,  1,NAME-A,  11,AA
  2,NAME-B,   2,B   ,  2,NAME-B,  12,AB
  3,NAME-C,   3,C   ,  3,NAME-C,  13,AC
   ,      ,    ,    ,  6,NAME-F,  16,AF
   ,      ,    ,    ,  7,NAME-G,  17,AG
  4,NAME-D,   4,D   ,   ,      ,    ,
  5,NAME-E,   5,E   ,   ,      ,    ,

7行が選択されました。

関連リンク