結合クエリとは
ほとんどの SQL クエリには、1 つ以上のテーブルからデータを返す単一の SELECT ステートメントのみが含まれています。 MySQL では、複数のクエリ (複数の SELECT ステートメント) を実行し、結果を 1 つのクエリ結果セットとして返すこともできます。これらの結合されたクエリは、多くの場合、ユニオン クエリまたは複合クエリと呼ばれます。
結合クエリを使用する必要がある基本的な状況は 2 つあります:
1. 単一のクエリで異なるテーブルから同様の構造のデータを返す場合;
2. 単一のクエリとしてデータを返す場合。
クエリと複数の WHERE 句の結合 ほとんどの場合、同じテーブル上で 2 つのクエリを結合すると、複数の WHERE 句条件を持つ単一のクエリと同じジョブが実行されます。つまり、次の段落でわかるように、複数の WHERE 句を含む SELECT ステートメントは結合クエリとして指定できます。どちらの手法も、クエリごとに異なるパフォーマンスを発揮します。したがって、両方の手法を試して、特定のクエリに対してどちらのパフォーマンスが優れているかを判断する必要があります。
結合クエリの作成方法
UNION 演算子を使用して、複数の SQL クエリを結合できます。 UNION を使用すると、複数の SELECT ステートメントを指定し、その結果を 1 つの結果セットに結合できます。
UNIONの使い方
UNIONの使い方は簡単です。必要なのは、各 SELECT ステートメントを指定し、各ステートメントの間にキーワード UNION を置くことだけです。
たとえば、価格が 5 以下のすべてのアイテムのリストが必要で、サプライヤー 1001 と 1002 によって製造されたすべてのアイテム (価格に関係なく) も含めたいとします。もちろん、これは WHERE 句を使用して実行できますが、今回は UNION を使用します。
前述したように、UNION の作成には複数の SELECT ステートメントの記述が含まれます。まず 1 つのステートメントを見てみましょう:
入力:
select vend_id,prod_id,prod_price from products where prod_price <= 5;
出力:
入力:
select vend_id,prod_id,prod_price from products where vend_id in (1001,1002);
出力:
分析: 最初の SELECT は、価格が 5 以下のすべてのアイテムを取得します。 2 番目の SELECT は IN を使用して、サプライヤー 1001 および 1002 によって製造されたすべての品目を検索します。
これら 2 つのステートメントを結合するには、次の手順を実行します。
入力:
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);
出力:
分析: このステートメントは、UNION キーワードで区切られた前の 2 つの SELECT ステートメントで構成されます。 UNION は、MySQL に 2 つの SELECT ステートメントを実行し、出力を 1 つのクエリ結果セットに結合するように指示します。
参考までに、UNION を使用する代わりに複数の WHERE 句を使用した同じクエリを次に示します。
入力:
select vend_id,prod_id,prod_price from products where prod_price <= 5 or vend_id in (1001,1002);
この単純な例では、UNION の使用は WHERE 句を使用するよりも複雑になる可能性があります。ただし、より複雑なフィルターの場合、または単一のテーブルではなく複数のテーブルからデータを取得する場合は、UNION を使用するとプロセスが簡素化される場合があります。
以上がmysql 複合クエリ: 複合クエリとは何ですか?結合クエリの作成方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。