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

プログラミング SQL Server

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をコピーしました