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 スタイルを指定する

推薦する

JSタイマーを使用して要素を移動する

JS タイマーを使用して、要素に移動する効果のあるメソッドを作成します。実装のアイデアは、まず要素の...

MySQL 文字セットの表示と変更のチュートリアル

1. 文字セットを確認する1. MYSQLデータベースサーバーとデータベースの文字セットを確認する方...

MySQL イベント スケジューラに関するよくある話 (必読)

概要MySQL には独自のイベント スケジューラもあり、これは Linux の crontab ジョ...

ウェブデザインにおけるグリッドシステム

グリッドシステムの形成1692年、新しく即位したフランス国王ルイ14世は、フランスの印刷技術のレベル...

独自のネイティブ JavaScript ルーターを作成する方法

目次序文導入JavaScript 履歴 API独自のネイティブJSルーティングを実装するHistor...

WeChat 8.0の爆発的な特殊効果を実現するために300行以上のCSSコードが必要

WeChat 8.0 アップデートの主な特徴は、アニメーション絵文字のサポートです。送信するメッセー...

MySQLのREDOログ(リドゥログ)とロールバックログ(アンドゥログ)の詳しい説明

序文:前回の記事では、MySQL システムでよく使用されるログをいくつか説明しました。実は、トランザ...

MySQL スロークエリ関連パラメータの原理の分析

MySQL スロー クエリ (正式名称はスロー クエリ ログ) は、MySQL によって提供されるロ...

LINUX でプロセスを表示する 4 つの方法 (要約)

プロセスは CPU とメモリ内で実行されるプログラム コードであり、各プロセスは 1 つ以上のプロセ...

Kylin V10 への zabbix-agent のインストール手順

1. インストールパッケージをダウンロードするダウンロードアドレス: https://sourcef...

Tomcatにデプロイされたアプリケーションがフロントエンドページにアクセスできない問題について

最近、実践的なトレーニング プロジェクトを実行する際に ssm フレームワークを使用しました。プロジ...

ベースタグとは何ですか? また、それは何をするのですか?

<base> タグは、ページ上のすべてのリンクのデフォルトのアドレスまたはデフォルトの...

MySQLデータベースのパスワードを忘れた場合の解決策

先ほど MySQL パスワードを設定したのに、外食したり荷物を受け取ったりするときにパスワードを忘れ...

Navicatを使用してクラウドサーバーデータベースにリモート接続する方法

秘密鍵を開かずにリモート サーバーのデータベースに接続するのは非常に便利です。新しい接続でデータを入...

TypeScript でオブジェクト キーの値の範囲を制限する方法

TypeScript を使用する場合、TypeScript が提供する型システムを使用してコードのあ...