[解決済み】SQL JOINとさまざまな種類のJOIN
質問
SQLとは
JOIN
また、どのような種類があるのでしょうか?
解決方法は?
とは何ですか?
SQL JOIN
?
SQL JOIN
は、2つ以上のデータベーステーブルからデータを取得するためのメソッドです。
どのような
SQL JOIN
s ?
は全部で5つあります。
JOIN
s. それらは :
1. JOIN or INNER JOIN
2. OUTER JOIN
2.1 LEFT OUTER JOIN or LEFT JOIN
2.2 RIGHT OUTER JOIN or RIGHT JOIN
2.3 FULL OUTER JOIN or FULL JOIN
3. NATURAL JOIN
4. CROSS JOIN
5. SELF JOIN
1. JOIN または INNER JOIN :
このような
JOIN
の場合、両方のテーブルで条件に一致するすべてのレコードを取得し、両方のテーブルで条件に一致しないレコードは報告されません。
つまり
INNER JOIN
という一つの事実に基づいています。両方のテーブルで一致する項目だけがリストアップされるべきである。
なお
JOIN
を使用せず、他の
JOIN
キーワード(例えば
INNER
,
OUTER
,
LEFT
など)は
INNER JOIN
. 言い換えれば
JOIN
は
に対する構文糖
INNER JOIN
(を参照してください)。
JOINとINNER JOINの違い
).
2. OUTER JOIN :
OUTER JOIN
を取得します。
どちらかです。 一方のテーブルのマッチした行と、もう一方のテーブルの全ての行。 または すべてのテーブルのすべての行 (一致するかどうかは関係ない)。
外部結合には、3つの種類があります。
2.1 LEFT OUTER JOINまたはLEFT JOIN
この結合は、左側のテーブルのすべての行を、一致する行と組み合わせて返します。
右のテーブル。右のテーブルに一致するカラムがない場合、それは
NULL
の値です。
2.2 RIGHT OUTER JOIN または RIGHT JOIN
これは
JOIN
は、右側のテーブルのすべての行と、それに対応する右側のテーブルの行を返します。
左のテーブル。もし左のテーブルに一致する列がなければ、それは
NULL
の値を指定します。
2.3 FULL OUTER JOIN または FULL JOIN
これは
JOIN
を組み合わせています。
LEFT OUTER JOIN
と
RIGHT OUTER JOIN
. 条件を満たしたときに、どちらかのテーブルから行を返し、さらに
NULL
の値を返す。
言い換えれば
OUTER JOIN
が基本です。テーブルの一方(RIGHTまたはLEFT)または両方(FULL)にマッチする項目のみがリストアップされるべきです。
Note that `OUTER JOIN` is a loosened form of `INNER JOIN`.
3. NATURAL JOIN :
これは、2つの条件に基づいています。
-
は
JOIN
は、同じ名前を持つすべてのカラムに対して、等価性を保つために行われる。 - 結果から重複する列を削除します。
これは理論的なものであり、結果としてほとんどのDBMSがそうであると思われます。 は、わざわざこれをサポートする必要はない。
4. クロスジョイン(CROSS JOIN) :
関係する2つのテーブルのデカルト積である。の結果は
CROSS JOIN
は意味をなさない
のような場合です。さらに、これはまったく必要ない(正確には、最低限必要)でしょう。
5. SELF JOIN :
の別形態ではありません。
JOIN
であり、むしろ
JOIN
(
INNER
,
OUTER
など)のテーブルを自分自身に置き換えます。
演算子によるJOIN
に使用される演算子によって
JOIN
節には、2つのタイプがあります。
JOIN
s. それらは
- Equi JOIN
- シータJOIN
1. Equi JOIN :
何であれ
JOIN
タイプ (
INNER
,
OUTER
等号演算子 (=) のみを使用する場合、以下のようになります。
その
JOIN
は
EQUI JOIN
.
2. シータ JOIN :
と同じです。
EQUI JOIN
しかし、これは >, <, >= などの他のすべての演算子を許容します。
多くの人が
EQUI JOIN
とシータJOIN
と同様INNER
,OUTER
その他JOIN
s. しかし、私はそれが間違いであると強く信じています。 が曖昧になる。なぜならINNER JOIN
,OUTER JOIN
などは、すべて テーブルとそのデータに対してEQUI JOIN
とTHETA JOIN
は は、前者で使う演算子でつながっています。ここでもまた、多くの人が
NATURAL JOIN
として、ある種の クオーツ。EQUI JOIN
. 実際、それは、最初の の条件として挙げたNATURAL JOIN
. しかし に限定しています。NATURAL JOIN
のみである。INNER JOIN
s,OUTER JOIN
s などはEQUI JOIN
もあります。
関連
-
[解決済み] INSERT ステートメントが FOREIGN KEY 制約と競合する - SQL Server
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] データフレームを結合(マージ)する方法(内側、外側、左側、右側)
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み] SQL JOIN - WHERE句とON句の比較
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】SQL Server サブクエリが1つ以上の値を返しました。サブクエリが =, !=, <, <= , >, >= に続く場合、これは許可されません。
-
[解決済み】SQL ServerでIdentityカラムを更新する方法は?
-
[解決済み】INTERSECTとINNER JOINは根本的に違うのか?[重複している]
-
[解決済み】単一のクエリで加重平均を計算する
-
[解決済み] SELECT DISTINCTを指定した場合、ORDER BY項目は必ず選択リストに表示されます。
-
[解決済み] リンクされたサーバーの NULL に対して OLE DB プロバイダー Microsoft.Jet.OLEDB.4.0 のインスタンスを作成できません。
-
[解決済み] ORA-00918: 列があいまいに定義されています」を解決する方法
-
[解決済み] PostgreSQL - json 型の等値演算子を識別できませんでした。
-
[解決済み] SQLでchar値をmoneyに変換できない
-
[解決済み] SQLiteでどのようにピボットするか、つまり、長い形式で保存されたテーブルを広い形式で選択するか?