union (all) と limit および exists キーワードの使用法を理解するための MySQL シリーズチュートリアル

union (all) と limit および exists キーワードの使用法を理解するための MySQL シリーズチュートリアル

1.union: クエリ結果を追加できます

Union は、特に関連のない 2 つのテーブルのデータを結合して表示する場合に、クエリ結果を追加するために使用されます。
ただし、前提条件があります。異なる結果を結合する場合、列の数は同じである必要があります。

次のデータを使用して、union の使用方法を説明します。

ここに画像の説明を挿入

1) すべてを結合: 重複を削除できません

ここに画像の説明を挿入

2) ユニオン:重複排除の効果が得られます。

ここに画像の説明を挿入

2.limit: ページングクエリはこれに依存します

1) 限界の使用法に関する説明

① 制限は MySQL に固有のものであり、他のデータベースには存在しないため、普遍的ではありません。

② Limitは結果セット内のデータの一部を取得します。これがその機能です。

③ LimitはSQL文の実行における最後のステップです。

limit を使用するための構文は次のとおりです。

limit startIndex,length; startIndex は 0 から始まる開始位置を示し、0 はデータの最初の部分を示し、length は取得する部分の数を示します。

2) ケースの説明

データソースは次のとおりです。

ここに画像の説明を挿入

① 給与額上位5名の従業員を抽出し、その情報を表示します。

ここに画像の説明を挿入

② 給与順位が4位から9位の従業員を探します。

ここに画像の説明を挿入

3) 共通標準ページングSQL

ここに画像の説明を挿入

上の図によれば、次のことがわかります。

ここに画像の説明を挿入

Baidu ブラウザを例に挙げてみましょう。

ここに画像の説明を挿入

3. 使用法が存在する: 「相関サブクエリ」とも呼ばれる

ここに画像の説明を挿入

1) 存在する実行原理を理解する

データソースは次のとおりです。

ここに画像の説明を挿入

① 返される結果がレコードの行である場合

ここに画像の説明を挿入

② 返される結果が複数行のレコードである場合

ここに画像の説明を挿入

③原理説明

上図から、exists キーワードの後の SQL 文が何であっても、1 つの結果を照会しても複数の結果を照会しても、結果が見つかれば結果全体が True になり、MySQL では True は 1 で表されるため、最終結果は 1 になることがわかります。 exists キーワードに続く SQL ステートメントで結果が見つからない場合、最終的な戻り値は False になります。MySQL では、False は 0 で表されるため、最終的な結果は 0 になります。

2) 事例紹介

以下のデータ ソースを使用して、次の 2 つの演習を完了してください。

ここに画像の説明を挿入

① ジョブテーブルをクエリして、実行中のジョブを確認します。

ここに画像の説明を挿入

② ジョブテーブルをクエリして、どのジョブが実行されていないかを確認します。

ここに画像の説明を挿入

3) 存在するサブクエリの原理を示す図

ここに画像の説明を挿入

説明は次のとおりです。

「会社 A があります。会社内のすべてのジョブは jobs テーブルにあります。emp テーブルには、どのジョブが完了したかが表示されます。」
ジョブを選択.job
仕事から
存在しない場合(empから*を選択し、jobs.job=emp.job);

1) どのような結果を達成したいかを考えます。
ここで取得したいのは「どのジョブが完了していないか」です。つまり、返される結果はジョブテーブルから取得されますが、
「どのジョブが実行され、どのジョブが実行されていないかをどうやって知るのでしょうか?」これには、emp テーブルを参照する必要があります。

2) まず、jobs テーブルから最初のレコードを取得し、emp テーブルに入れて、テーブル内のすべての行と一致させます。馬が
最初の行を一致させるとき、empテーブルの各行には8つの列があるので、正確に何を一致させたいのでしょうか?
「where jobs.job = emp.job」と指定します。この条件は、
テーブルから最初のレコードを取得し、empの各行と照合します。より具体的には、最初の行と一致します。
ジョブ フィールドを一致させるには、jobs.job と emp.job が等しいかどうかを確認するだけです。等しい場合は、レコードを返します。
次に、最初の行を順番に比較します。jobs.jobとemp.jobが等しい限り、
このレコード。したがって、jobs の最初の行が emp の各行と一致すると、結果セットが返されます。

3) existsキーワードを見てみましょう。exists()によって返される結果はtrueまたはfalseです。括弧内に値がある場合、
存在する場合は true が返され、括弧内に値がない場合には false が返されます。 (1)によれば、我々は
ご存知のように、jobs の最初の行が emp の各行と一致した後、結果セットが返されます。これは、結果セットが返されたことを証明します。
値なので、exists() は true を返します。

4) exists() の前に not が追加されると、否定を意味します。 exists() は true を返しますが、exists() は true を返します。
戻り値は false です。

5) 上記の説明によれば、not exists() が false になった場合、元のステートメントは次のものと同等になります。
false の jobs から jobs.job を選択します。
したがって、店員の最初の行は取得できません。

6) 次に、jobs の 2 番目の行「SALESMAN」を取得し、emp テーブルの各行と照合します。
上記の手順を繰り返します。

上記は、union (all)、limit、exists キーワードを理解するための MySQL シリーズ記事の詳細な内容です。union (all)、limit、exists キーワードの MySQL シリーズの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQL 選択最適化ソリューションに関する簡単な説明
  • MySQL で結果を選択して更新を実行する例のチュートリアル
  • MySQLの読み書き分離により挿入後にデータが選択されなくなる問題を解決
  • MySQL SELECT文の実行方法
  • MySQL で distinct メソッドを使用する詳細な例
  • MySQL で重複を削除するには、distinct または group by を使用する必要がありますか?
  • MySQL における distinct と group by の違い
  • MySQLのLIMIT文について詳しく説明します
  • MySQL のクエリパフォーマンスに対する制限の影響
  • MySQL での select、distinct、limit の使用

<<:  ウェブページでよく使用される共有コードの完全なリスト(フロントエンドに必須)

>>:  HTML 学習ノート - HTML 構文の詳細な説明 (必読)

推薦する

Nginx+Tomcat 負荷分散クラスタのインストールと構成のケースの詳細な説明

目次序文1. Nginx+Tomcat 2. Nginxサーバーを構成する3. Tomcatアプリケ...

上位Nを見つけるためのMySQLグループソートの詳細な説明

MySQLグループソートで上位Nを見つけるテーブル構造grp でグループ化し、num で並べ替えて、...

MySQL が起動直後にシャットダウンする問題 (ibdata1 ファイルの破損が原因) に対する完璧な解決策

コンピュータ ルームのサーバー上の mysql がしばらく実行されていたのですが、突然、再起動しても...

WindowsでcmdからDOSウィンドウに入り、MySQLデータベースにアクセスします。

1. win + R を押して cmd と入力し、DOS ウィンドウに入ります。 2. MySQL...

JSはclip-pathを使用して動的領域クリッピング機能を実装します

背景今日、CodePen を閲覧していたところ、非常に興味深い効果を見つけました。 CodePen ...

CSSの幅と高さのデフォルト値の詳細な説明:autoと%

結論は幅の%: 包含ブロック(親要素)の幅に基づいて、親の制限を超える幅のパーセンテージを定義します...

React 合成イベントの説明

目次入力ボックスをクリックして開始します拡張機能入力ボックスをクリックすると複数のイベントが発生しま...

js クロージャとガベージ コレクション メカニズムの例の詳細な説明

目次序文文章1. 終了1.1 クロージャとは何ですか? 1.2 クロージャの特性1.3 クロージャを...

docker ベースの mariadb のインストール構成プロセスの分析

1. インストール dockerhub を通じてインストールする mariadb のバージョンを検索...

JS で async await をエレガントに使用する方法

目次jQuery の $.ajax Webpack時代の始まり約束について深く考えるネストをなくすj...

React HTML で react を使用する 2 つの方法

基本的な使い方 <!DOCTYPE html> <html lang="...

Mysql マスタースレーブレプリケーションの注意事項の説明

1. マスター'x@xxxx:x'への接続エラー- 再試行時間: 60 再試行回数:...

IE6 および IE7 で DIV コンテナの固定高さを使用するためのヒント

IE6 と IE7 では CSS の解釈に多くの違いがあります。今日はそのうちの 1 つである高さに...

vue_drf は SMS 認証コードを実装します

目次1. 需要1. 需要2. SDKパラメータ設定1. ディレクトリ構造3. コードの実装1. バッ...

Reactコンポーネントのライフサイクルの詳細な説明

目次1.ライフサイクルとは何か2. 読み込みプロセス1.コンストラクタ2. レンダリング3. コンポ...