FULL (OUTER) JOIN (完全外部結合)を使ってデータを取得する

FULL (OUTER) JOIN (完全外部結合)を使ってデータを取得する

前回は 「 RIGHT (OUTER) JOIN (右外部結合)を使ってデータを取得する 」 で、RIGHT JOIN を使って、二つのテーブルを結合してデータを取得しました。

OUTER JOIN (外部結合) には LEFT, RIGHT, FULL の 3 種類があります。


今回は残りの FULL (OUTER) JOIN (完全外部結合) を使って、二つのテーブルを結合して値を取得してみましょう。

まだ生成していなければ、こちら のスクリプトを実行して、Student・Test・TestResult テーブルを生成しておいてください。

FULL JOIN (完全外部結合)

FULL JOIN を使って、 [左テーブル] FULL JOIN [右テーブル] ON ... のように結合すると、ON で指定した条件がマッチする [左テーブル] と [右テーブル] のレコードに加えて、[左テーブル] のマッチしないレコードと、[右テーブル] のマッチしないレコードが取得できます。

JOIN (結合)の基本と種類について 4


次のような Student テーブルと TestResult テーブルがあります。

[ Student テーブル ]
FULL (OUTER) JOIN (完全外部結合)を使ってデータを取得する 1

[ TestResult テーブル ]
FULL (OUTER) JOIN (完全外部結合)を使ってデータを取得する 2


FULL JOIN を使って、Student テーブルと TestResult テーブル を StudentID で結合した結果は以下の通りです。

SELECT  S.*,
        TR.*
FROM    Student AS S
            FULL JOIN TestResult AS TR
                ON S.StudentID = TR.StudentID;

[ 実行結果 ]
FULL (OUTER) JOIN (完全外部結合)を使ってデータを取得する 3

黄色い枠で囲まれた部分が StudentID がマッチした部分、赤い枠が Student テーブルのマッチしなかったレコード、緑の枠が TestResult テーブルのマッチしなかったレコードです。


好みかもしれませんが、私は開発をしていて FULL JOIN はあんまり使う機会がないです。 INNER JOIN, LEFT JOIN がほとんどで、まれに CROSS JOIN を使うという感じです。


次は、CROSS JOIN (クロス結合)を使ってデータを取得してみましょう。

© 2010-2024 SQL Server 入門