DataBaseMySQL

MySQL テーブルの結合

内部結合

構文

select 
      テーブル1の名前.列1, 
      テーブル1の名前.列2,
      テーブル2の名前.列1
from
      テーブル1の名前 (エイリアスを使用可能。テーブル1の名前 as エイリアス, asは省略可)
inner join (innerは省略可だが、外部結合と区別するため省略しない方がよい)
      テーブル2の名前 (エイリアスを使用可能。テーブル2の名前 as エイリアス, asは省略可)
on テーブル1の名前.結合列名 = テーブル2の名前.結合列名
where 絞り込み条件
group by グループ化の条件
having グループ化した後の絞り込み条件
order by 並び替えの条件
limit 取得件数;

外部結合

片方のデータがすべて出力される。

select 
      テーブル1の名前.列1, 
      テーブル1の名前.列2,
      テーブル2の名前.列1
from
      テーブル1の名前 (エイリアスを使用可能。テーブル1の名前 as エイリアス, asは省略可)
left outer join 
      (outerは省略可。leftだとfromの後のテーブル1がマスタ。rightだとright outer joinの後のテーブル2がマスタになる)
      テーブル2の名前 (エイリアスを使用可能。テーブル2の名前 as エイリアス, asは省略可)
on テーブル1の名前.結合列名 = テーブル2の名前.結合列名
where 絞り込み条件
group by グループ化の条件
having グループ化した後の絞り込み条件
order by 並び替えの条件
limit 取得件数;

別々に取得したデータを結合する

union [重複行は削除] union all [重複行も出力]を使用。ベースにunion後の取得データを足す。

同じカラム数にして、同じ位置のカラムはデータ型を一致させる必要がある。

select
      列1, 列2 
from
      テーブル1
where 絞り込み条件
group by グループ化の条件
having グループ化した後の絞り込み条件 
union
select
      列1, 列2
from
      テーブル2
where 絞り込み条件
group by グループ化の条件
having グループ化した後の絞り込み条件 
order by (全体で1回だけ使用可)
      並び替え条件
limit 取得件数;

コメントを残す