【Oracle SQL*Plus】テーブル結合(INNER 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を紐づけて結合します。結合条件を満たすレコードのみ残す場合「INNER JOIN」を使います。

SQL> SELECT * FROM TEST_TABLE A
INNER JOIN TEST_TABLE2 B
ON  A.ID = B.ID
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

取得したい項目を選んで整理すると・・・

SQL> SELECT A.ID, A.NAME, A.VAL1 AVAL1, A.VAL2 AVAL2, B.VAL1 BVAL1, B.VAL2 BVAL2
  2  FROM TEST_TABLE A
  3  INNER JOIN TEST_TABLE2 B
  4  ON  A.ID = B.ID
  5  AND A.NAME = B.NAME;

        ID,NAME      ,     AVAL1,AVAL2     ,     BVAL1,BVAL2
----------,----------,----------,----------,----------,----------
         1,NAME-A    ,         1,A         ,        11,AA
         2,NAME-B    ,         2,B         ,        12,AB
         3,NAME-C    ,         3,C         ,        13,AC

関連リンク