MySQL複合クエリの詳細な説明

MySQL複合クエリの詳細な説明

UNIONの使用

ほとんどの SQL クエリは、1 つ以上のテーブルからデータを返す単一の SELECT ステートメントで構成されます。 MySQL では、複数のクエリ (複数の SELECT ステートメント) を実行し、結果を単一のクエリ結果セットとして返すこともできます。これらの結合されたクエリは、多くの場合、ユニオンと呼ばれます。

複合クエリが必要となる状況は 2 つあります。

  • 単一のテーブル クエリで、異なるテーブルから同様に構造化されたデータを返します。
  • 単一のテーブルに対して複数のクエリを実行し、データを単一のクエリとして返します。

クエリと複数の WHERE 条件の組み合わせ: ほとんどの場合、同じテーブルで 2 つのクエリを組み合わせると、複数の WHERE 句条件を持つ単一のクエリと同じ作業が実行されます。

UNION 演算子を使用して、複数の SQL クエリを組み合わせることができます。必要なのは、各 SELECT ステートメントを指定して、各ステートメントの間にキーワード UNION を入れることだけです。

例えば:

価格が5以下のすべての商品のリストが必要で、サプライヤー1001と1002が製造したすべての商品も含めたいとします。もちろん、WHERE句を使用してこれを実現できますが、ここではUNIONを使用します。

  • ここに2つの文の組み合わせがあります
製品からvend_id、prod_id、prod_priceを選択します。ここで、prod_price <= 5です。

SELECT vend_id、prod_id、prod_price FROM products WHERE vend_id IN (1001, 1002);

  • 次の文を使うことができます
SELECT vend_id、prod_id、prod_price FROM products WHERE prod_price <= 5 UNION SELECT vend_id、prod_id、prod_price FROM products WHERE vend_id IN (1001, 1002);

  • 同様にWHERE句を使うこともできる
製品からvend_id、prod_id、prod_priceを選択します。prod_price <= 5、またはvend_id IN (1001, 1002)です。

UNIONルール

  • UNION は、キーワード UNION で区切られた 2 つ以上の SELECT ステートメントで構成されている必要があります。
  • UNION 内の各クエリには、同じ列、式、または集計関数が含まれている必要があります (列は同じ順序でリストされている必要はありません)。
  • 列のデータ型は互換性がある必要があります。同じ型である必要はありませんが、DBMS が暗黙的に変換できる型 (異なる数値型または異なる日付型) である必要があります。

重複行を含めるか除外するか

UNION は、クエリ結果セットから重複する行を自動的に削除します。一致するすべての行を返す場合は、UNION ALL を使用します。

SELECT vend_id、prod_id、prod_price FROM products WHERE prod_price <= 5 UNION ALL SELECT vend_id、prod_id、prod_price FROM products WHERE vend_id IN (1001, 1002);

結合されたクエリ結果の並べ替え

SELECT ステートメントの出力は、ORDER BY 句を使用してソートされます。UNION を使用してクエリを結合する場合、使用できる ORDER BY 句は 1 つだけです。最後の SELECT ステートメントの後に表示される必要があります。複数の ORDER BY 句は許可されません。

SELECT vend_id、prod_id、prod_price FROM products WHERE prod_price <= 5 UNION SELECT vend_id、prod_id、prod_price FROM products WHERE vend_id IN (1001, 1002) ORDER BY vend_id、prod_price;

上記はMySQL複合クエリの詳細な説明です。MySQL複合クエリの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQL サブクエリ (ネストされたクエリ)、結合テーブル、複合クエリの詳細な説明
  • MySQLクエリデータを時間別に表示します。データがない場合は0を入力してください。
  • MySQL sql_modeクエリと設定の詳細な説明
  • MySQL サブクエリとグループ化されたクエリ
  • MySQL グループ化クエリと集計関数
  • MysqlクエリJSON結果に関連する関数の概要
  • MySQLクエリのソートとページング関連
  • MySql クエリ期間メソッド
  • MySQL での基本的な複数テーブル結合クエリのチュートリアル
  • MySQL のサブクエリの例

<<:  TCPパフォーマンスチューニングの実装原理とプロセス分析

>>:  マークアップ言語 - テキストの CSS スタイルを指定する

推薦する

HTMLの基本構造を包括的に理解する

HTML入門ハイパーテキスト マークアップ言語: ハイパーテキスト マークアップ言語ハイパーテキスト...

IE 環境での css-vars-ponyfill の使用に関する詳細な説明 (nextjs ビルド)

css-vars-ポニーフィルCSS 変数を使用して Web ページのスキニングを実現すると、互換...

Faint: 「Web2.0 を使用して標準に準拠したページを作成する」

今日、ある人がウェブサイト開発プロジェクトについて話をしてくれました。具体的な要件について話すと、「...

MySQL マルチマスターと 1 スレーブのデータバックアップ方法のチュートリアル

概要いずれかのデータベースに対する操作は他のデータベースに自動的に適用され、2 つのデータベースのデ...

MySQL接続がハングする理由の詳細な説明

目次1. 背景建築問題現象2. 分析プロセス接続プール不安に陥る雲を晴らして光を見よう3. 解決策I...

クロスドメインの問題を解決するためのNginxの実用的な方法

フロントエンドとバックエンドを分離し、nginxを使用してクロスドメインの問題を解決するフロントエン...

MySQLにおける時刻日付型と文字列型の選択について

目次1. DATETIMEとTIMESTAMPの使用1. 類似点2. 相違点3. 選択2. varc...

MySQL 外部キー制約の一般的な操作の例 [表示、追加、変更、削除]

この記事では、例を使用して、MySQL 外部キー制約の一般的な操作について説明します。ご参考までに、...

MySQL実行計画の詳細な説明

EXPLAIN ステートメントは、MySQL がステートメントを実行する方法に関する情報を提供します...

CSSカスケーディングメカニズムについての簡単な説明

CSS にカスケード メカニズムがあるのはなぜですか? CSS では、同じ要素の特定のプロパティに同...

JD.com フラッシュセール効果を実現する JavaScript

この記事では、JD.comのフラッシュセール効果を実現するためのJavaScriptの具体的なコード...

vagrant+virtualBoxで仮想マシンを構築する方法

1. はじめにVagrant は、仮想マシン (VirtualBox) を構築および管理するためのツ...

Vue3 での provide と injection の使用

1. provideとinjectの説明Provide と Inject により、ネストされたコンポ...

Linuxで静的ネットワーク接続を構成する方法

Linux システムのネットワーク接続を構成するのは難しい場合があります。幸いなことに、多くの新しい...

分散監視システムZabbixはSNMPとJMXチャネルを使用してデータを収集します

前回の記事では、Zabbix のパッシブ、アクティブ、Web 監視に関するトピックについて学習しまし...