SQLの内部結合のサンプルです。
inner joinを使用します。
目次
内部結合(inner join)
| select 項目 from「テーブルA 」 inner join 「テーブルB」on 結合する条件 |
- inner joinは、内部結合と呼ばれます。
- inner joinの前後に結合したいテーブルを記述します。
- onの後に結合条件を記述します。
- 抽出する行は、「テーブルA」と「テーブルB」で条件が一致した行です。
テストデータ
次の2つのテーブルがあるとします。
| user_id | name |
|---|---|
| 1 | 鈴木 |
| 2 | 田中 |
| user_cd | item_no |
|---|---|
| 1 | A001 |
| 1 | B001 |
| 99 | D001 |
SQL文
上記テーブルに対してinner joinを使用してデータを抽出します。
SELECT
u.user_id,u.name,s.user_cd,s.item_no
FROM users u
inner join sales s
on u.user_id = s.user_cd;
4行目は、inner joinです。
5行目は、上記2つのテーブルにあるuser_idとuser_cdを結合条件としています。
結果
結果は、以下のとおりです。
| user_id | name | user_cd | item_no |
|---|---|---|---|
| 1 | 鈴木 | 1 | A001 |
| 1 | 鈴木 | 1 | B001 |
表の1,2行目は、上記SQLの5行目の条件に一致した行です。
usersテーブルにある"田中"の行とsalesテーブルにあるuser_cd=99の行は抽出されません。
結合条件をwhereに書き換える
| select 項目 from「テーブルA 」 inner join「テーブルB」where 結合する条件 |
inner join ~ on のonをwhereにできます。
SELECT
u.user_id,u.name,s.user_cd,s.item_no
FROM users u
inner join sales s
where u.user_id = s.user_cd;
5行目は、onの代わりにwhereを指定しています。
結果は上記のonを使用した時と同じです。
joinのみでinnerがない場合
| select 項目 from「テーブルA 」join「テーブルB」on 結合する条件 |
joinのみでinnerがない場合です。
SELECT
u.user_id,u.name,s.user_cd,s.item_no
FROM users u
join sales s
on u.user_id = s.user_cd;
4行目は、joinのみです。
結果は上記のinner joinの時と同じです。
関連の記事
SQL INSERT文のサンプル
SQL UPDATE文とDELETE文のサンプル
SQL 重複行を表示しないサンプル(distinct)
SQL 複数の行をまとめる(集約関数/group by/having)
SQL 外部結合のサンプル(left outer join/right outer join)
SQL 副問合せのサンプル(サブクエリ)
SQL 自己結合のサンプル
SQL UNIONとUNION ALLのサンプル