INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN の違いは何ですか? [重複] 質問する

INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN の違いは何ですか? [重複] 質問する

MySQLINNER JOINLEFT JOINRIGHT JOIN違いは何ですか?FULL JOIN

ベストアンサー1

SQL JOIN 句は、2 つ以上のテーブル間の共通フィールドに基づいて、それらの行を結合するために使用されます。

SQL ではさまざまな種類の結合を使用できます。

INNER JOIN : 両方のテーブルに一致する行を返します。

LEFT JOIN : 右側のテーブルに一致するものがない場合でも、左側のテーブルのすべての行を返します。

RIGHT JOIN : 左側のテーブルに一致するものがない場合でも、右側のテーブルのすべての行を返します。

FULL JOIN : 左外部結合と右外部結合の両方の結果を結合します。

結合されたテーブルには両方のテーブルのすべてのレコードが含まれ、どちらかの側で一致しないレコードには NULL が埋め込まれます。

SELF JOIN : テーブルを 2 つのテーブルであるかのように結合し、SQL ステートメント内の少なくとも 1 つのテーブルの名前を一時的に変更します。

CARTESIAN JOIN : 結合された 2 つ以上のテーブルからのレコード セットの直積を返します。

詳細の最初の 4 つの結合をそれぞれ取得できます。

次の値を持つ 2 つのテーブルがあります。

表A

id  firstName                  lastName
.......................................
1   arun                        prasanth                 
2   ann                         antony                   
3   sruthy                      abc                      
6   new                         abc                                           

表B

id2 age Place
................
1   24  kerala
2   24  usa
3   25  ekm
5   24  chennai

................................................................................

内部結合

: 2 つのテーブルの共通部分、つまり TableA と TableB に共通する行を示します。

構文

SELECT table1.column1, table2.column2...
  FROM table1
 INNER JOIN table2
    ON table1.common_field = table2.common_field;

サンプル テーブルに適用します。

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
 INNER JOIN TableB
    ON TableA.id = TableB.id2;

結果

firstName       lastName       age  Place
..............................................
arun            prasanth        24  kerala
ann             antony          24  usa
sruthy          abc             25  ekm

左結合

: TableA で選択されたすべての行と、TableB で共通して選択された行がすべて表示されます。

構文

SELECT table1.column1, table2.column2...
  FROM table1
  LEFT JOIN table2
    ON table1.common_field = table2.common_field;

サンプル テーブルに適用します。

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
  LEFT JOIN TableB
    ON TableA.id = TableB.id2;

結果

firstName                   lastName                    age   Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL

右結合

: TableB で選択されたすべての行と、TableA で共通して選択された行がすべて表示されます。

構文

SELECT table1.column1, table2.column2...
  FROM table1
 RIGHT JOIN table2
    ON table1.common_field = table2.common_field;

サンプル テーブルに適用します。

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
 RIGHT JOIN TableB
    ON TableA.id = TableB.id2;

結果

firstName                   lastName                    age     Place
...............................................................................
arun                        prasanth                    24     kerala
ann                         antony                      24     usa
sruthy                      abc                         25     ekm
NULL                        NULL                        24     chennai

完全結合

: 両方のテーブルから選択されたすべての値を返します。

構文

SELECT table1.column1, table2.column2...
  FROM table1
  FULL JOIN table2
    ON table1.common_field = table2.common_field;

サンプル テーブルに適用します。

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
  FULL JOIN TableB
    ON TableA.id = TableB.id2;

結果

firstName                   lastName                    age    Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL
NULL                        NULL                        24    chennai

興味深い事実

  • INNER 結合の場合、順序は重要ではありません。
  • (LEFT、RIGHT、または FULL) OUTER 結合の場合、順序が重要になります。

これを確認したほうがいいリンク結合順序に関する興味深い詳細が提供されます。

おすすめ記事