MySQLのINNER JOIN
、LEFT JOIN
、RIGHT 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 結合の場合、順序が重要になります。
これを確認したほうがいいリンク結合順序に関する興味深い詳細が提供されます。