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 構文の詳細な説明 (必読)

推薦する

mysql mycat ミドルウェアのインストールと使用

1. mycatとはエンタープライズアプリケーション開発のための完全にオープンソースの大規模データベ...

MySQL に接続する際に Navicat for MySQL が 2005 エラーを報告する問題を解決する

前回の記事では、Navicat for Mysql 接続エラー 1251 (接続失敗) の問題を解決...

Windows Server 2016 で Flash を有効にする方法

最近、VMware Horizo​​n を導入してテストしましたが、そのコンソールにはデフォルトで ...

Linux サーバーのグラフィック カードのクラッシュの解決策

ログインインターフェースの解像度が特に大きい場合、グラフィカルインターフェース全体が特に大きくなり、...

MySQL ログイン警告問題の解決策

1. はじめにMySQL にログインすると、次のような警告が表示されることがよくあります。警告: コ...

Vue の関連ページへのマルチレベルジャンプ (ページドリルダウン) 機能の完全な例

背景プロジェクト開発プロセスでは、前のページから次のページにジャンプする必要に迫られることがよくあり...

角度に基づくツリー型セカンダリテーブルを実現する

まず効果を見てみましょう: コード: 1.html <div class="user...

MySQL の分離レベルの包括的な分析

データベースが同じデータ バッチを同時に追加、削除、および変更すると、ダーティ書き込み、ダーティ読み...

MySQLは数百万のシミュレーションデータ操作コードを自動的に挿入します

私はデータベースツールとして Navicat を使用しています。他のものも同様です。 1. Navi...

Docker 階層化パッケージを使用して Spring Boot を設定する方法

Spring Boot プロジェクトでは、Docker コンテナ、jar、war の階層化パッケージ...

Vueで親子コンポーネント通信を実装する方法

目次1. 親コンポーネントと子コンポーネントの関係2. 小道具3. $エミット4. $親V. 結論 ...

アイデアを使用して Springboot 初期化サーバーを構築する際の問題分析

問題の説明最近、Springbootプロジェクトを構築していたところ、会社のネットワークケーブルに接...

一般的なSQL削除ステートメントの原則の違いを理解するだけです

この記事では主に、SQL 削除ステートメント DROP、TRUNCATE、および DELETE の違...

Nodejs は readline を使用してコンテンツ入力を促すサンプルコード

目次序文1. batがjsを実行する2. ターミナルにバージョン番号を入力してパッケージ化コマンドを...

JavaScript の基礎: 即時実行関数

目次関数フォーマットを即時実行関数を即座に実行する他の方法 – 式即時実行される関数はパラメータを取...