MySQL のINNER JOIN
、LEFT JOIN
、RIGHT JOIN
およびFULL JOIN
の違いは何ですか?
コードプロジェクト についてのこの元の記事を読んでおくと役に立ちます: SQL結合の視覚的表現 。
またこの記事をチェックしなさい: SQLサーバ - よりよい性能 - 左に結合するかどうか。 。
MySQLのJOINとOUTER JOINの違い でオリジナルのものを見つけてください。
INNER JOIN 外部キーに基づいて両方のテーブル間で共通のすべてのレコードを取得します。
LEFT JOIN LEFTリンクテーブルからすべてのレコードを取得しますが、RIGHTテーブルからいくつかの列を選択した場合、関連レコードがない場合、これらの列にはNULLが入ります。
RIGHT JOIN は上記と同じですが、RIGHTテーブル内のすべてのレコードを取得します。
FULL JOIN 両方のテーブルからすべてのレコードを取得し、反対側のテーブルに関連レコードが存在しない列にNULLを挿入します。
SQL JOIN句は、2つ以上のテーブル間の共通フィールドに基づいて、2つ以上のテーブルの行を結合するために使用されます。
SQLには、さまざまな種類の結合があります。
INNER JOIN :両方のテーブルに一致がある場合に行を返します。
LEFT JOIN :右側のテーブルに一致するものがない場合でも、左側のテーブルからすべての行を返します。
RIGHT JOIN :左側のテーブルに一致するものがない場合でも、右側のテーブルからすべての行を返します。
FULL JOIN :左右両方の外部結合の結果を結合します。
結合テーブルには、両方のテーブルからのすべてのレコードが含まれ、どちらかの側で一致しない場合はNULLを入力します。
SELF JOIN :テーブルが2つのテーブルであるかのようにテーブルをそれ自体に結合し、一時的にSQLステートメント内の少なくとも1つのテーブルの名前を変更するために使用されます。
CARTESIAN JOIN :2つ以上の結合テーブルからレコードセットのデカルト積を返します。
私たちはDetailsで最初の4つの結合をそれぞれ取ることができます。
次の値を持つ2つのテーブルがあります。
TableA
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
RIGHT JOIN
注 :は、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
FULL JOIN
注 :両方のテーブルから選択されたすべての値を返します。
構文
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
興味深い事実
内部結合の場合、順序は関係ありません
(LEFT、RIGHTまたはFULL)OUTER結合の場合、順序は重要です
Linkこれをチェックしてください。それはあなたに結合順序についての興味深い詳細を与えるでしょう