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

推薦する

CentOS7 で yum を使用して PostgreSQL と PostGIS をインストールする方法

1. yumソースを更新するCentOS7 のデフォルトの yum リポジトリの PostgreSQ...

携帯電話向けウェブページ作成のヒント

現在では多くの人がスマートフォンを使用していることを考慮すると、モバイル Web ページの書き方は、...

html オプション 無効 選択 選択 無効 オプションの例

コードをコピーコードは次のとおりです。 <選択> <オプション値="&q...

HTMLタグオーバーフロー処理アプリケーション

CSSを使用してスクロールバーを変更する1.コンテンツがオーバーフローした場合のオーバーフロー設定水...

タイムライン効果を実現するCSS3

最近、コンピューターの電源を入れたところ、Geek Academy が新規ユーザーに 1 か月の無料...

JS での矢印関数と this の記述と理解

目次序文1. JSで関数を書く方法1. 通常の関数の書き方2. 矢印関数の書き方2. 通常の関数でこ...

Ubuntu 20.04でルートアカウントを有効にする方法

Ubuntu 20.04 をインストールした後、デフォルトでは root アカウントのログイン権限が...

MySQL 8.0 DDLアトミック機能と実装原則

1. DDLアトミック性の概要8.0 より前は、統一されたデータ ディクショナリ dd はありません...

mysql バッチで大量のデータを削除する

mysql バッチで大量のデータを削除する1000万件のレコードを持つテーブル(syslogs)があ...

Vue ページに img 画像を導入する方法

HTMLを学ぶとき、画像タグ<img>は画像を導入します <img src=&qu...

Tomcat が応答データグラムを書き戻すタイミングの詳細な分析

疑問が生じるこの質問は、ファイルのダウンロードを記述しているときに発生しました。HttpServle...

WeChatアプレットはビデオプレーヤーのビデオコンポーネントを使用します

この記事の例では、WeChatアプレットのビデオプレーヤーコンポーネントの具体的なコードを参考までに...

win10にmysql 8.0.18-winx64をインストールする詳細な手順

1. まず公式ウェブサイトにアクセスしてMySQLインストールパッケージをダウンロードします参考: ...

dockerを使用してTomcatをデプロイし、Skywalkingに接続する

目次1. 概要2. dockerを使用してTomcatをデプロイし、Skywalkingに接続する要...

よく使われるnginxの書き換えルールの詳細な説明

この記事では、Web ページのリンクを美しくするためによく使用される書き換えルールをいくつか紹介しま...