MySQLの左結合と内部結合について簡単に説明します

MySQLの左結合と内部結合について簡単に説明します

序文

最近、X 省のコールド チェーン トレーサビリティ システムの開発で忙しくしています。毎日午後 11 時まで働いて帰宅します。週末も残業しています。ブログを書く時間はあまりありません。時間ができたら書きます。

ビジネス:ウェアハウスに出入りするデータをカウントする SQL ステートメント。

質問: X エンドの受信注文のみがカウントされます。

理由: X 側データベースでは、受信注文にのみフィールド a データがあり、送信注文にはフィールド a がなく、フィールド a が内部結合に使用されていたため、統計操作では受信注文しか見つけられなかったことが判明しませんでした。注: 倉庫の入庫注文と出庫注文は同じテーブルにあります。統計データを収集する場合、一部のデータはフィールドを使用して他のテーブルと関連付ける必要があります。

解決策:左結合を使用します。

私はいつも、左結合と内部結合をいつ使用できるのか疑問に思っていましたが、今回は教訓を得ました。

それらの違いについては、次の記事をお読みください。

内部結合と左結合の違い

ここに小さなコピーがあります:

内部結合と左結合の違いは理解しているつもりでしたが、今日フロントエンドからパラメータを取得したときに、結果が期待したものと異なることがわかり、問題は内部結合にあることに気付きました。

要件は、データベースからデータをクエリし、それをフロントエンドに棒グラフの形式で表示することです。見つかったデータは業界別にグループ化されており、各業界の世帯数と世帯の割合が表示されます。関連するフィールドは、テーブル A のユーザー数と合計ユーザー数、およびテーブル B の業界名です。本来であれば、データが見つかるかどうかに関わらず、X軸に業種名が表示されるはずですが、X軸にもY軸にもデータが表示されません。問題は、間違った接続方法を使用していたことです。

1. SQLにおける左結合、右結合、内部結合の違い

左結合は、左のテーブル内のすべてのレコードと、結合フィールドが等しい右のテーブルのレコードを返します。

右結合は、右側のテーブル内のすべてのレコードと、左側のテーブルで結合フィールドが等しいレコードを返します。

内部結合(等値結合)は、2つのテーブルの結合フィールドが等しい行のみを返します。

以下にいくつか例を挙げます。

表 A には次の内容が記録されています。

ID番号
1 a20050111
2 a20050112
3a20050113
4 a20050114
5a20050115

表 B には次の内容が記録されています。

bID b名前
1 2006032401
2 2006032402
3 2006032403
4 2006032404
8 2006032408

1.左結合

SQL ステートメントは次のとおりです。

Aから*を選択
左結合B
A.aID = B.bIDの場合

結果は次のとおりです。

aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
5 a20050115 NULL NULL

(影響を受ける行数は5です)

結果:

左結合はテーブル A のレコードに基づいています。A は左テーブル、B は右テーブルと見なすことができます。左結合は左テーブルに基づいています。

つまり、左側のテーブル (A) のすべてのレコードが表示され、右側のテーブル (B) には検索条件を満たすレコードのみが表示されます (この例では、A.aID = B.bID)。

テーブル B に十分なレコードがない箇所はすべて NULL です。

要約する

これで、MySQL の左結合と内部結合に関するこの記事は終了です。MySQL の左結合と内部結合の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • mysql 結合クエリ (左結合、右結合、内部結合)
  • MYSQL 左結合、右結合、内部結合の詳細な説明と違い
  • mysql 左結合、右結合、内部結合
  • MySQL の内部結合、左結合、右結合クエリの詳細な説明

<<:  HTML テーブルタグチュートリアル (45): テーブル本体タグ

>>:  ローカル yum ソースの設定、国内 yum ソースの設定、epel ソースの設定を行う Linux の手順

推薦する

スクロール時に選択領域のフォント色を暗くするために CSS を使用するサンプルコード

日付ピッカーをカプセル化する場合、選択時にフォントの色を暗くする必要があります。実装後の効果を見てみ...

MySQL でテーブルを削除する 3 つの方法 (要約)

ドロップテーブルドロップはテーブル情報を直接削除するため、最も高速ですが、データを取得することはでき...

MySQLが間違ったインデックスを選択する理由と解決策

MySQL では、テーブルに複数のインデックスを指定できますが、ステートメントの実行時に、使用するイ...

Kylin V10 への zabbix-agent のインストール手順

1. インストールパッケージをダウンロードするダウンロードアドレス: https://sourcef...

マインスイーパゲームを実装するための jQuery プラグイン (1)

この記事では、jQueryプラグインを使用したマインスイーパゲームの最初の記事の具体的なコードを参考...

MySQLはストアドプロシージャを使用して数百万のデータを素早く追加します。サンプルコード

序文インデックスを追加した場合と追加しなかった場合の違いを反映するには、数百万のデータを使用する必要...

WindowsにJDK8をインストールする方法

1. ダウンロード: http://www.oracle.com/technetwork/java/...

MySQLリモート接続失敗の解決策

以前、MySQLがローカルでは接続できるのにリモートでは接続できないという問題に遭遇したことがありま...

Vueコンポーネントの動的コンポーネントの詳細な説明

目次要約する要約する配列が変更されると、対応するデータを動的にロードしますシナリオ: 異なるコンポー...

JavaScriptプロトタイプチェーン図のまとめと実践

目次プロトタイプチェーンプロトタイプチェーンに基づいてシンプルなJQueryライブラリを実装すること...

スライダー効果を実装するミニプログラム

この記事の例では、スライディングブロック効果を実現するための小さなプログラムの具体的なコードを参考ま...

<td></td> タグの境界線スタイルがブラウザに表示されない問題の解決方法

質問: 360ブラウザの互換モードなど、一部のブラウザでは、 <td style="...

MySQLは重複しないデータ挿入を実装するためにUNIQUEを使用する

SQL UNIQUE制約UNIQUE 制約は、データベース テーブル内の各レコードを一意に識別します...

MySQL のデータ型とフィールド属性の原理と使用法の詳細な説明

この記事では、MySQL のデータ型とフィールド属性について説明します。ご参考までに、詳細は以下の通...

HTMLウェブページのMETAタグのコンテンツを書く際のポイント

META タグは、HTML 言語のヘッダー領域にある補助タグです。作成者、日時、Web ページの説明...