【初心者向けDB講座-MySQL編-】#7-3:複数の結合とテーブルの結合

3つ以上のテーブルを使った結合

結合を行う join は複数回用いる事で2つ以上のテーブルを結合できます。

基本構文

inner join の構文を使って複数結合する場合は以下になります。

例題:city一覧にcountryテーブルのNameとcountrylanguageテーブルのLanguageを追加して表示してください。CountryCodeがキーになります。表示はcityテーブル「ID」「Name」、countryテーブル「Name」、countrylanguageテーブル「Language」としてください。

構文

テーブルの足し算 union / union all

テーブルの足し算を行う 集団演算子 union について説明します。

注意点

  1. union / union all で2種類あります。重複情報がないことが確定している場合は、重複確認をしない union all の方が負荷が少ないので、こちらを利用しましょう。
種類 意味
union 重複削除
union all 重複も含める
  1. テーブル1とテーブル2で列数をあわせる必要があります。
  2. 同じ位置にあるカラムのデータ型は一致している必要があります。
  3. ソートを行う order by は、最後に記述しましょう。

union(重複行を削除)

基本構文

ベースとなるselectの結果に、union のあとに記載したselectの結果を足し算します。

例題:以下2つのテーブル(顧客テーブル [ Customer ] / 見込み客テーブル [ Prospective Customer])を union で結合してみましょう。

[ Customerテーブル ]

id name
1 Okada
2 Tanaka
3 Nakata

[ Prospective Customerテーブル ]

pc-id name address
3 Nakata Osaka
5 Ono Tokyo

以下のコマンドを実行します。

結果は以下になります。

id name
1 Okada
2 Tanaka
3 Nakata
5 Ono

union all(重複行を含む)

基本構文

ベースとなるselectの結果に、union all のあとに記載したselectの結果を足し算します。

例題:以下2つのテーブル(顧客テーブル [ Customer ] / 見込み客テーブル [ Prospective Customer])を union all で結合してみましょう。

[ Customerテーブル ]

id name
1 Okada
2 Tanaka
3 Nakata

[ Prospective Customerテーブル ]

pc-id name address
3 Nakata Osaka
5 Ono Tokyo

以下のコマンドを実行します。

結果は以下になります。

id name
1 Okada
2 Tanaka
3 Nakata
3 Nakata
5 Ono
最新情報をチェックしよう!