「INNER JOIN」「LEFT OUTER JOIN」「RIGHT OUTER JOIN」「FULL OUTER JOIN」についてまとめ

SQLでよく使う「INNER JOIN」「LEFT OUTER JOIN」「RIGHT OUTER JOIN」「FULL OUTER JOIN」についてまとめてみます。

SQLで良く使うJOINについて

SQLでよく使う「INNER JOIN」「LEFT OUTER JOIN」「RIGHT OUTER JOIN」「FULL OUTER JOIN」についてまとめてみます。

データの準備

まずはデータを準備します。

------------------------------------------
--テーブル作成
------------------------------------------
CREATE TABLE test_main_table
(
     no   INT
    ,name VARCHAR(20)
)

CREATE TABLE test_sub_table
(
     no   INT
    ,age  int
)

------------------------------------------
--データ作成
------------------------------------------
INSERT INTO test_main_table VALUES ( 1, '太郎さん' )
INSERT INTO test_main_table VALUES ( 2, '次郎さん' )
INSERT INTO test_main_table VALUES ( 4, '四郎さん' )
INSERT INTO test_main_table VALUES ( 5, '五郎さん' )

INSERT INTO test_sub_table VALUES ( 1, 10 )
INSERT INTO test_sub_table VALUES ( 2, 20 )
INSERT INTO test_sub_table VALUES ( 3, 30 )
INSERT INTO test_sub_table VALUES ( 5, 50 )

INNER JOIN

INNER JOINは「両方にnoが存在するデータ」の集合を取得します。

----------------------------------------
--INNER JOIN
----------------------------------------
SELECT
     test_main_table.no AS test_main_table_no
    ,test_sub_table.no AS test_sub_table_no
    ,name
    ,age
FROM
    test_main_table INNER JOIN test_sub_table ON
        test_main_table.no = test_sub_table.no

実行結果は

test_main_table_no test_sub_table_no name age
1 1 太郎さん 10
2 2 次郎さん 20
5 5 五郎さん 50

です。

LEFT OUTER JOIN

LEFT OUTER JOINは「左側のテーブルに存在noすべてとそれに該当する右側のデータ」の集合を取得します。

----------------------------------------
--LEFT OUTER JOIN
----------------------------------------
SELECT
     test_main_table.no AS test_main_table_no
    ,test_sub_table.no AS test_sub_table_no
    ,name
    ,age
FROM
    test_main_table LEFT OUTER JOIN test_sub_table ON
        test_main_table.no = test_sub_table.no

以下が実行結果です。

test_main_table_no test_sub_table_no name age
1 1 太郎さん 10
2 2 次郎さん 20
4 NULL 四郎さん NULL
5 5 五郎さん 50

RIGHT OUTER JOIN

RIGHT OUTER JOINは「右側のテーブルに存在noすべてとそれに該当する左側のデータ」の集合を取得します。

----------------------------------------
--RIGHT OUTER JOIN
----------------------------------------
SELECT
     test_main_table.no AS test_main_table_no
    ,test_sub_table.no AS test_sub_table_no
    ,name
    ,age
FROM
    test_main_table RIGHT OUTER JOIN test_sub_table ON
        test_main_table.no = test_sub_table.no

以下が実行結果です。

test_main_table_no test_sub_table_no name age
1 1 太郎さん 10
2 2 次郎さん 20
NULL 3 NULL 30
5 5 五郎さん 50

FULL OUTER JOIN

FULL OUTER JOINは「左側のテーブルと右側に存在するすべて組み合わせのnoのデータ」の集合を取得します。

----------------------------------------
--FULL OUTER JOIN
----------------------------------------
SELECT
     test_main_table.no AS test_main_table_no
    ,test_sub_table.no AS test_sub_table_no
    ,name
    ,age
FROM
    test_main_table FULL OUTER JOIN test_sub_table ON
        test_main_table.no = test_sub_table.no

以下が実行結果です。

test_main_table_no test_sub_table_no name age
1 1 太郎さん 10
2 2 次郎さん 20
4 NULL 四郎さん NULL
5 5 五郎さん 50
NULL 3 NULL 30
タイトルとURLをコピーしました