例文を使って繰り返し業務を時短

【SQL】テーブルとテーブルを結合する(INNER JOIN・LEFT JOIN・RIGHT JOIN・OUTER JOIN) 

SQLを使ってテーブルとテーブルを結合する方法 SQL

SQLでは、複数のテーブルを結合してデータを取得することができます。テーブルを結合する方法には、INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN(または単に OUTER JOIN)があります。

  • inner join:共通キーに2つのテーブルを結合 →共通しているレコードのみ
  • left join:左のテーブルのデータはすべて抽出して、右のテーブルにはないものはNULLで返される
  • right join:右のテーブルのデータはすべて抽出して、左のテーブルにはないものはNULLで返される
  • outer join:どちらかのテーブルにあるレコードのすべてが返される

INNER JOIN

SQLでは、複数のテーブルを結合してデータを取得することができます。テーブルを結合する方法には、INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN(または単に OUTER JOIN)があります。

INNER JOIN

INNER JOINは、結合する2つのテーブルのうち、両方に共通する値のみを抽出します。


SELECT
    カラム
FROM
    テーブル名 A
INNER JOIN
    テーブル名 B
ON
    A.キー = B.キー
WHERE
    条件式

# ONは「どのカラムで結合するか」を指定
# テーブル名 テーブル1 はA、テーブル名 テーブル2  はBと別名を付ける
# A.数学はtest01テーブルの数学のカラムから、B.国語は、test02テーブルの国語のカラムからデータを取得
SELECT
    A.氏名,A.数学,B.国語
FROM
    テーブル1 as A
INNER JOIN
    テーブル2 as B
ON
    A.氏名 = B.氏名

*INNER JOINはFROMとWHEREの間に記述

*テーブル名にasをつけると別名を付けることができる(このasは省略可)
別名のつけ方:テーブル名+スペース+別名


LEFT JOIN

LEFT JOINは、左側のテーブルにはあるが右側のテーブルにはない値も抽出することができます。

SELECT
    カラム
FROM
    テーブル名 A
LEFT JOIN
    テーブル名 B
ON
    A.キー = B.キー
WHERE
    条件式


SELECT
  *
FROM test01 A
LEFT JOIN test02 B ON A.氏名 = B.氏名

*WHEREはGROUP BYされる前のデータに抽出条件を付けくわえる

*HAVINGはGROUP BYされた後のデータに抽出条件を 付けくわえる

RIGHT JOIN

RIGHT JOINは、左側のテーブルにはないが右側のテーブルにはある値も抽出することができます。

#
SELECT * 
FROM test_table01 AS A
RIGHT JOIN test_table02 AS B
ON A.氏名 = B.氏名

SELECT
  *
FROM test01 t1
RIGHT JOIN test02 t2 ON t1.氏名 = t2.氏名

SELECT
  *
FROM test02 t2
LEFT JOIN test01 t1 ON t2.氏名 = t1.氏名

FULL OUTER JOIN(または OUTER JOIN)

FULL OUTER JOINは、左右のテーブルにはあるが、片方だけにしかない値も抽出することができます。

SELECT *
FROM table1
FULL OUTER JOIN table2
ON table1.column = table2.column;

上記の例では、table1とtable2という2つのテーブルをFULL OUTER JOINしています。左右の両方にある値だけでなく、どちらか片方にしかない値も抽出することができます。

JOIN句の表記

INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOINは、JOIN句でも表記することができます。例えば、LEFT JOINの場合は以下のようになります。

SELECT *
FROM table1
JOIN table2
ON table1.column = table2.column
LEFT JOIN table3
ON table2.column = table3.column;

上記の例では、table1とtable2をJOINし、その結果に対してtable3をLEFT JOINしています。JOIN句を組み合わせることで、複数のテーブルを結合することができます。

コメント

タイトルとURLをコピーしました