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

推薦する

Linux ps および pstree コマンドの知識ポイントのまとめ

Linux の ps コマンドは Process Status の略です。 ps コマンドは、システ...

パーソナライズされたクリエイティブなウェブサイトデザインの例 (30)

そこで、個性的なスタジオやフリーランスを表現する組み合わせを 30 個選びました。デザインを目立たせ...

Docker ベースの nginx ファイル サーバーを構築する方法と手順

1. このマシンに新しい設定ファイルdocker_nginx.confを作成します。 サーバー{ 7...

Dockerコミットの使い方の詳しい説明

場合によっては、ベースイメージに特定の依存関係をインストールする必要があります。Dockerfile...

CSSをインポートする方法は何ですか?linkと@importの違いは何ですか?選択方法

Taobao のウェブページはインポートを使用していますが、多くのウェブサイトはリンクを使用していま...

Vue で変数式セレクターを実装する方法

目次HTML構造の定義入力タグのバインディング属性入力タグはキーダウンイベントをリッスンしますli ...

LinuxとGNUシステムの関係の詳細な説明

目次私たちが毎日実行している Linux システムとは何でしょうか? LinuxカーネルとGNUシス...

Linux で大きなファイルの指定された内容を見つける方法

大きなことも小さなことも考えて、方向転換しましょう。 Linux では非常に大きなファイルに遭遇する...

ElementuiはデータをxlsxとExcelテーブルにエクスポートします

最近、Vue プロジェクトについて知り、ElementUI でデータを xlsx および Excel...

データベースクエリの最適化: サブクエリの最適化

1. 事例会社のトップ以外の従業員全員を年齢別にグループ化します。 t_emp で id が存在しな...

Docker プライマリ ネットワーク ポート マッピング構成

ポートマッピングDocker コンテナを起動する前にポート マッピングを行わないと、コンテナ外部のネ...

フラッシュコンテンツの表示に使用される OBJECT タグと EMBED タグの違いの紹介

1. はじめに:ウェブページにフラッシュ コンテンツを正常に表示したい場合は、ページ上のフラッシュ ...

OpenSSL を使用した Kubernetes 証明書の生成の概要

Kubernetes は、基本認証、トークン認証、CA 認証の 3 種類の認証をサポートしています。...

jsはシングルクリックでテーブルを変更することを実装します

Pure jsは、参照用にワンクリックで編集可能なテーブル(トランスクリプトに似たもの)を実装してい...

JS 開発効率を上げる4つの超実践的なヒント

目次1. 短絡判定2. オプション連鎖演算子 (?) 3. ヌル合体演算子 (??) 4. 終了関数...