JOIN という言葉は、データベースに接したことがある人なら誰でも聞いたことがあるでしょう。多くの人はさまざまな JOIN をよく知っていますが、それを十分に理解している人は多くありません。 テーブルA | テーブルB PK 値 | PK 値 ---- ---------- | ---- ---------- 1 フォックス | 1 トロット 警官 2 人 | 車 2 台 3 タクシー | 3 キャブ 6 ワシントン | 6 モニュメント 7 デル | 7 PC 5 アリゾナ | 8 マイクロソフト 4 リンカーン | 9 アップル 10 ルーセント | 11 スコッチ 結合構文:結合テーブル: table_reference JOIN table_factor [join_condition] //内部結合 | table_reference {LEFT|RIGHT|FULL} [OUTER] JOIN table_reference join_condition //外部結合 | table_reference LEFT SEMI JOIN table_reference join_condition //左セミ結合 | table_reference CROSS JOIN table_reference [join_condition] (Hive 0.10 以降) テーブル参照: table_factor //テーブル | join_table //結合ステートメント table_factor: tbl_name [エイリアス] //テーブル名 [エイリアス] | table_subquery alias //サブクエリ [alias] | ( table_references ) // スペースを含む table_reference 結合条件: ON 式 //on で始まる条件文 1. 内部結合: (内部結合)これは最も単純で理解しやすい接続であり、最も一般的な接続でもあります。このクエリは、右側のテーブル (テーブル B) に一致するレコードがある左側のテーブル (テーブル A) のすべてのレコードを返します。この接続は次のように記述されます。 SELECT <選択リスト> Table_A から A 内部結合テーブル_B B Aキーオン = Bキー -- 内部結合 A.PKをA_PKとして選択し、A.ValueをA_Valueとして選択します。 B.Value は B_Value として、B.PK は B_PK として Table_A から A 内部結合テーブル_B B A.PK = B.PK の場合 A_PK A_値 B_値 B_PK ---- ---------- ---------- ---- 1 フォックストロット 1 2 パトカー2 3 タクシー 3 6 ワシントン記念塔 6 7 デル PC 7 (5 行が影響を受けます) 2. 左結合: (左結合)このクエリは、右側のテーブル (テーブル B) のレコードと一致するかどうかに関係なく、左側のテーブル (テーブル A) のすべてのレコードを返します。また、正しいテーブルから一致するレコードも返します。この接続は次のように記述されます。 SELECT <選択リスト> Table_A から A LEFT JOIN テーブル_B B Aキーオン = Bキー -- 左 JOIN A.PKをA_PKとして選択し、A.ValueをA_Valueとして選択します。 B.Value は B_Value として、B.PK は B_PK として Table_A から A LEFT JOIN テーブル_B B A.PK = B.PK の場合 A_PK A_値 B_値 B_PK ---- ---------- ---------- ---- 1 フォックストロット 1 2 パトカー2 3 タクシー 3 4 リンカーン NULL NULL 5 アリゾナ NULL NULL 6 ワシントン記念塔 6 7 デル PC 7 10 ルーセント ヌル ヌル (8 行が影響を受けています) 3. 左除外結合: (左結合は内部結合の結果を除外します)このクエリは、右側のテーブル (テーブル B) のどのレコードとも一致しない左側のテーブル (テーブル A) のすべてのレコードを返します。この接続は次のように記述されます。 SELECT <選択リスト> Table_A から A LEFT JOIN テーブル_B B Aキーオン = Bキー B.KeyがNULLの場合 -- JOIN を除く左 A.PKをA_PKとして選択し、A.ValueをA_Valueとして選択します。 B.Value は B_Value として、B.PK は B_PK として Table_A から A LEFT JOIN テーブル_B B A.PK = B.PK の場合 B.PKがNULLの場合 A_PK A_値 B_値 B_PK ---- ---------- ---------- ---- 4 リンカーン NULL NULL 5 アリゾナ NULL NULL 10 ルーセント ヌル ヌル (3 行が影響を受けます) 4. 右結合: (右結合)このクエリは、右側のテーブル (テーブル B) のすべてのレコードを返します (そのレコードのいずれかが左側のテーブル (テーブル A) のレコードと一致するかどうかは関係ありません)。また、左側のテーブルから一致するレコードも返します。この接続は次のように記述されます。 SELECT <選択リスト> Table_A から A 右結合テーブル_B B Aキーオン = Bキー --右結合 A.PKをA_PKとして選択し、A.ValueをA_Valueとして選択します。 B.Value は B_Value として、B.PK は B_PK として Table_A から A 右結合テーブル_B B A.PK = B.PK の場合 A_PK A_値 B_値 B_PK ---- ---------- ---------- ---- 1 フォックストロット 1 2 パトカー2 3 タクシー 3 6 ワシントン記念塔 6 7 デル PC 7 NULL NULL マイクロソフト 8 ヌルヌルアップル9 ヌルヌルスコッチ11 (8 行が影響を受けています) 5. 右除外結合: (右結合は内部結合の結果を除外します)このクエリは、左側のテーブル (テーブル A) のどのレコードとも一致しない右側のテーブル (テーブル B) のすべてのレコードを返します。この接続は次のように記述されます。 SELECT <選択リスト> Table_A から A 右結合テーブル_B B Aキーオン = Bキー A.KeyがNULLの場合 -- JOINを除く右 A.PKをA_PKとして選択し、A.ValueをA_Valueとして選択します。 B.Value は B_Value として、B.PK は B_PK として Table_A から A 右結合テーブル_B B A.PK = B.PK の場合 A.PK が NULL の場合 A_PK A_値 B_値 B_PK ---- ---------- ---------- ---- NULL NULL マイクロソフト 8 ヌルヌルアップル9 ヌルヌルスコッチ11 (3 行が影響を受けます) 6. 外部結合: (外部結合)この結合は、完全外部結合または完全結合とも呼ばれます。このクエリは、両方のテーブルのすべてのレコードを返し、右側のテーブル (テーブル B) のレコードと一致する左側のテーブル (テーブル A) のレコードを結合します。この接続は次のように記述されます。 SELECT <選択リスト> Table_A から A 完全外部結合 Table_B B Aキーオン = Bキー -- 外部結合 A.PKをA_PKとして選択し、A.ValueをA_Valueとして選択します。 B.Value は B_Value として、B.PK は B_PK として Table_A から A 完全外部結合 Table_B B A.PK = B.PK の場合 A_PK A_値 B_値 B_PK ---- ---------- ---------- ---- 1 フォックストロット 1 2 パトカー2 3 タクシー 3 6 ワシントン記念塔 6 7 デル PC 7 NULL NULL マイクロソフト 8 ヌルヌルアップル9 ヌルヌルスコッチ11 5 アリゾナ NULL NULL 4 リンカーン NULL NULL 10 ルーセント ヌル ヌル (11 行が影響を受けています) 7. 外部結合除外: (外部結合は内部結合の結果を除外します)このクエリは、左側のテーブル (テーブル A) のすべてのレコードと、右側のテーブル (テーブル B) の一致しないすべてのレコードを返します。このタイプの結合はまだ使用する必要はありませんが、他のタイプの結合は頻繁に使用します。この接続は次のように記述されます。 SELECT <選択リスト> Table_A から A 完全外部結合 Table_B B Aキーオン = Bキー A.Key が NULL であるか、B.Key が NULL である場合 -- 外部除外結合 A.PKをA_PKとして選択し、A.ValueをA_Valueとして選択します。 B.Value は B_Value として、B.PK は B_PK として Table_A から A 完全外部結合 Table_B B A.PK = B.PK の場合 A.PK が NULL の場合 または B.PK が NULL です A_PK A_値 B_値 B_PK ---- ---------- ---------- ---- NULL NULL マイクロソフト 8 ヌルヌルアップル9 ヌルヌルスコッチ11 5 アリゾナ NULL NULL 4 リンカーン NULL NULL 10 ルーセント ヌル ヌル (6 行が影響を受けます) 外部結合では、最初に内部結合レコードが返され、次に右結合レコードが返され、最後に左結合レコードが返されることに注意してください (少なくとも、私の Microsoft SQL Server ではそのように行われます。もちろん、ORDER BY ステートメントを使用する必要はありません)。詳細については、Wikipedia の記事をご覧ください (ただし、エントリはグラフィカルではありません)。必要に応じて印刷できるチートシートも作成しました。下の画像を右クリックして「対象をファイルに保存」を選択すると、フルサイズの画像がダウンロードされます。 mysql-joins の具体的な使用法についてはこれで終わりです。mysql-joins のより適切な使用法については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
目次バブルソート選択ソート挿入ソート要約するバブルソートバブルソートは、シーケンスの右側から始めて、...
この記事では、プラグインを使用して画像の比例カットを実現するVueの具体的なコードを参考までに共有し...
実際のプロジェクトでは、上下のスクロール バーと左右のスクロール バーは DIV 内にないため、右の...
1. 問題の再現:各日の合計数を日ごとにカウントします。データのない日がある場合、グループ化によっ...
WeChatアプレットuniappは左スワイプで削除効果を実現成果を達成する1. スワイプしてリス...
最初のもの: 1. 主要なヘッダーファイルを追加します。 #include <linux/of...
序文ヒント:以下はこの記事の主な内容です。以下のケースを参考にしてください。 1. オブジェクトスト...
目次1. 開発環境2. dockerプラグインをインストールする1. アイデアのインストール2. イ...
CSS スタイル ルール構文スタイルは、CSS の基本単位です。各スタイル ルールは、セレクターと宣...
<html:reset> タグを使用すると、リセット ボタンが無効になり、ボタンをクリッ...
SQL文 /* MySQL で重複行を削除するいくつかの方法 ---Chu Minfei ---20...
目次概要フレームワークを選択する理由は何ですか? js のエンバーEmber.js と Vue.js...
この記事では、参考までに、簡単な計算機を実装するためのJavaScriptの具体的なコードを紹介しま...
目次1. Nginx の紹介2. 画像サーバーの構築1. Nginx の紹介Nginx はリバース ...
目次1. ディレクティブカスタムディレクティブ2. ミックスイン3. 継承を拡張する4. 提供して注...