MySQLの自己接続と結合の詳細な理解

MySQLの自己接続と結合の詳細な理解

1. MySQL 自己接続

MySQL では、情報を照会するときに自分自身に接続 (自己接続) する必要がある場合があるため、テーブルのエイリアスを定義する必要があります。例を見てみましょう。以下は商品購入表です。購入価格がHuihuiよりも高いすべての情報を見つける必要があります。

一般的に言えば、この表を見ると、まず次のようなステートメントで操作します。

ショッピングから*を選択 WHERE price>27

ご想像のとおり、これは非常に簡単です。データベース テーブルの詳細なデータがわからない場合や、データの量が非常に多い場合はどうすればよいでしょうか。データベース管理者は、必要なデータをすばやく見つけるために他の方法を使用する必要があります。

ステップバイステップのクエリ

最も簡単な方法は、最も簡単に思いつく方法でもあります。

SELECT price FROM shopping WHERE name='惠惠' //価格クエリの結果は27です
ショッピングから*を選択 WHERE price>27

自己接続方式と比較すると、この方法では中間結果に対する手動介入が必要であり、プログラム内の自動処理操作には明らかに役立ちません。

セルフ接続方式:

b.*を選択 
Aとしての買い物からBとしての買い物まで
ここで、a.name='惠惠' 
そしてa.価格<b.価格 
b.idで注文

次のテーブル情報を取得できます。


注記:

エイリアス a と b は名前が異なりますが、同じテーブルです。エイリアスを定義する目的は、エイリアスの削除や選択を容易にすることです。

select through (中間テーブル) を実行して、最終結果である b.* を取得します。

サブクエリ

サブクエリもよく使用される方法で、select 内に select をネストします。

実装コードは次のとおりです。

ショッピングから*を選択 
WHERE price>(name='惠惠' の 'shopping' から価格を選択)

結果は以下に示されており、両方の方法で得られた結果は同じであることがわかります。


参加する

内部結合

内部結合の主な機能は、テーブル内に少なくとも 1 つの一致がある場合に結果セットを返すことです。ここでの内部結合と結合は同じ機能を持つため、一緒に紹介します。
以下に、商品テーブルとカテゴリ テーブルの 2 つのテーブルを示します。

SELECT * FROM goods INNER JOIN category 
ON goods.id=カテゴリー.goods_id 
gods.idで注文する

結果は以下のようになります。

左結合

LEFT JOIN キーワードは、右側のテーブル (table_name2) に一致する行がない場合でも、左側のテーブル (table_name1) のすべての行を返します。プロジェクトを実行するときは左結合を使用することをお勧めします。ただし、テーブルの関連付けが多数あり、1 つのテーブルが a に左結合されていると同時に、b に右結合されています。この場合、右結合を追加すると、記述が簡単になる場合があります。

最初の 2 つのテーブルを適用して、左結合クエリを実行します。

SELECT goods.*,category.cate_name 
商品から左へカテゴリを結合 
ON goods.id=カテゴリー.goods_id 
goods.idで注文する


右結合

RIGHT JOIN キーワードは、左側のテーブル (table_name1) に一致する行がない場合でも、右側のテーブル (table_name2) のすべての行を返します。最初の 2 つのテーブルを適用して、右結合クエリを実行します。

a.goods_name、a.price、b.* を選択
商品として
RIGHT JOIN カテゴリを b として
オン a.id=b.goods_id
b.idで注文


複数テーブルの関連付けの場合は、関連付けステートメントをいくつか追加するだけです。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただき、ありがとうございます。

以下もご興味があるかもしれません:
  • MySQL の複数の左結合クエリの使用状況の分析
  • MySQL の最適化: サブクエリの代わりに結合を使用する
  • MySQL クエリの最適化: 結合クエリのソート制限の概要 (結合、順序、制限ステートメント)
  • MySQL で JOIN ステートメントを使用して接続操作を実行する詳細なチュートリアル
  • MySQL 結合クエリの原則の知識ポイント
  • MySQL 結合クエリ構文と例
  • MySQLでよく使用されるいくつかの結合接続方法の概要

<<:  jQueryはマウスドラッグ画像機能を実装します

>>:  Linux で txt を mysql にインポートする方法

推薦する

mysql 8.0.15 winx64 解凍バージョン グラフィック インストール チュートリアル

システムをインストールした後、毎回いくつかのソフトウェアを再インストールする必要があります。ソフトウ...

geo モジュールを使用して Nginx でホワイトリストを設定する例

元の構成: http { ...... limit_conn_zone $binary_remote...

nginx をベースにした Web クラスター プロジェクトをすばやく構築する方法を説明します。

目次1. プロジェクト環境2. プロジェクトの説明3. プロジェクトの手順1. インストール2. 構...

Ubuntu での Subversion (SVN) の詳細なインストールと設定

ソフトウェア開発者であれば、Subversion に精通している必要があります。 Subversio...

WeChatミニプログラムはuni-appを通じて世界中に共有されます

実際の使用では、ミニプログラムを友人や友人サークルと共有する必要があることが多く、通常は一度に 1 ...

ウェブページ作成によく使われる英語フォント

アリアルArial は、多くの Microsoft アプリケーションとともに配布されるサンセリフ T...

Vueのdiffアルゴリズムについての簡単な説明

目次概要バーチャルドム原理実装プロセスパッチ方式sameVnode関数patchVnode関数upd...

LinuxのCentos7でmysql5.7.29を構築する詳細なプロセス

1. MySQLをダウンロードする1.1 ダウンロードアドレスhttps://downloads.m...

Reactでのこのリファレンスの詳細な説明

目次原因:以下を実行します: 1. コンストラクター2.レンダリング機能3.bind関数とarrow...

CSS3 を使用して色付きのプログレスバーアニメーションを実装する例

簡単なチュートリアルこれは CSS3 カラー プログレス バー アニメーション効果です。 CSS3 ...

React tsx はランダムな検証コードを生成します

React tsxは参照用にランダムな検証コードを生成します。具体的な内容は次のとおりです。最近、t...

Linux CentOS6.5 yum インストール mysql5.6

この記事では、Linux yumを使用してmysql5.6をインストールする簡単な手順を参考までに紹...

MySQLの外部ネットワークアクセス権を開く方法

以下のように表示されます。主に認証コマンドを実行します: 2つの方法1. 任意のホストがユーザー b...

VMWare12 グラフィックチュートリアルで Apple Mac OS X をインストールする

1. はじめに:友人はシステム知識を学びたいと考えており、Apple のラップトップを使用していまし...

MySQLの詳細な分析で使用法と結果を説明します

序文日常業務では、実行に時間のかかる SQL ステートメントを記録するために、スロー クエリを実行す...