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 の手順

推薦する

Visual Studio Code + Reactをベースに開発環境を構築するプロセス

開発環境ウィンドウ開発ツール Visual Studio Codeノードのインストールとnpm Wi...

mysqlを使用して、URLから返されたhttp GETリクエストデータを記録します。

ビジネスシナリオの要件と実装ロジックの分析ビジネスでは、HTTP GET を使用してデータを要求する...

CSSは高さを設定せずにdivを完全に中央に配置することを実現します

必要とする本文の下のdivは垂直方向に中央揃えになっていますdiv 内のテキストを垂直中央に配置する...

HTMLフォーム要素の包括的な理解

以下のように表示されます。 XML/HTML コードコンテンツをクリップボードにコピー<!DO...

Javascript DOM、ノード、要素取得の紹介

目次DOMノード要素ノード:テキストノード:プロパティ ノード:要素を取得getElementByI...

MySQL で中国語の文字をピンインでソートする簡単な例

名前を格納するフィールドが GBK 文字セットを使用している場合、GBK 内部コード自体がエンコード...

LinuxソースコードからTIME_WAITの期間を分析する

目次1. はじめに2. まずLinux環境を紹介しましょう3. TIME_WAIT状態遷移図4. 継...

WebプロジェクトのDockerデプロイメントの実装

前回の記事では、docker サービスをインストールしました。引き続き、Web プロジェクトのデプロ...

jsを使用してシンプルな虫眼鏡効果を実現します

この記事では、簡単な虫眼鏡効果を実現するためのjsの具体的なコードを参考までに共有します。具体的な内...

変換を使用して純粋な CSS ポップアップ メニューを実装するためのサンプル コード

序文トップメニューを作成する場合、ポップアップのセカンダリメニューを作成する必要があります。 以前の...

JavaScript マウスイベントのケーススタディ

マウスイベントマウスが特定の操作を実行すると、イベント オブジェクトが生成され、イベントがトリガーさ...

mysql-5.7.21-winx64 無料インストール版のインストール - Windows チュートリアル詳細説明

1 ダウンロードアドレスは https://dev.mysql.com/downloads/mysq...

JavaScriptはスクロールバーの位置を取得し、ページをアンカーポイントまでスライドします。

序文この記事は、私が最近仕事で遭遇した問題を記録したものです。アプリネイティブとフロントエンドのh5...

JSでよく使われるデータ処理方法

目次DOM処理配列方法要約するDOM処理DOM はドキュメントの構造化された表現を提供し、スクリプト...

Vue実戦記録のログインページの実装

目次1. 事前準備1.1 Node.jsをインストールする1.2 webpackをインストールする1...