SQLでSELECT文での結合について
SELECT文では、複数のテーブルを FROM句に指定することができます。
その複数のテーブル指定には、以下の5種類の結合方法があります。
- 内部結合
- 完全外部結合
- 左外部結合
- 右外部結合
- クロス結合
例えば以下の2つのテーブルがあったとします。
Test01TBL
RowA | RowB |
---|---|
1001 | 1 |
1002 | 2 |
Test02TBL
RowC | RowD |
---|---|
2 | XXXX |
3 | YYYY |
◆内部結合(INNER JOIN)
SELECT Test01TBL.RowA, Test02TBL.RowD
FROM Test01TBL INNER JOIN Test02TBL ON Test01TBL.RowB = Test02TBL.RowC
RowA | RowD |
---|---|
1002 | XXXX |
◆完全外部結合(FULL OUTER JOIN)
SELECT Test01TBL.RowA, Test02TBL.RowD
FROM Test01TBL FULL OUTER JOIN Test02TBL ON Test01TBL.RowB = Test02TBL.RowC
RowA | RowD |
---|---|
1001 | NULL |
1002 | XXXX |
NULL | YYYY |
◆左外部結合(LEFT OUTER JOIN)
SELECT Test01TBL.RowA, Test02TBL.RowD
FROM Test01TBL LEFT OUTER JOIN Test02TBL ON Test01TBL.RowB = Test02TBL.RowC
RowA | RowD |
---|---|
1001 | NULL |
1002 | XXXX |
◆右外部結合(RIGHT OUTER JOIN)
SELECT Test01TBL.RowA, Test02TBL.RowD
FROM Test01TBL RIGHT OUTER JOIN Test02TBL ON Test01TBL.RowB = Test02TBL.RowC
RowA | RowD |
---|---|
1002 | XXXX |
NULL | YYYY |
◆クロス結合(CROSS JOIN)
SELECT Test01TBL.RowA, Test02TBL.RowD FROM Test01TBL CROSS JOIN Test02TBL
RowA | RowD |
---|---|
1001 | XXXX |
1002 | XXXX |
1001 | YYYY |
1002 | YYYY |
SELECT Test01TBL.RowA, Test02TBL.RowD FROM Test01TBL ,Test02TBL