ホームページ >データベース >mysql チュートリアル >MySQL 複合クエリでの UNION 照合の例

MySQL 複合クエリでの UNION 照合の例

巴扎黑
巴扎黑オリジナル
2017-05-12 14:18:244199ブラウズ

ご覧のとおり、使い方はとても簡単です。ただし、マージを行う際には注意すべきルールがいくつかあります。

1.UNION は、キーワード UNION で区切られた 2 つ以上の SELECT ステートメントで構成されている必要があります (したがって、4 つの SELECT ステートメントを組み合わせると、3 つの UNION キーワードが使用されます)。

2. UNION 内の各クエリには、同じ列、式、または集計関数が含まれている必要があります (ただし、列は同じ順序でリストされる必要はありません)。

3. 列のデータ型は互換性がある必要があります。型はまったく同じである必要はありませんが、DBMS が暗黙的に変換できる型である必要があります (たとえば、異なる数値型や異なる日付型)。これらの基本的なルールまたは制限に従っている場合は、任意のデータ取得タスクに と を使用できます。


重複行を含めるかキャンセルする

個別に実行すると、最初の SELECT ステートメントは 4 行を返し、2 番目の SELECT ステートメントは 5 行を返すことに気付きました。ただし、2 つの SELECT ステートメントを UNION で結合すると、9 行ではなく 8 行だけが返されます。

UNION は、クエリ結果セットから重複行を自動的に削除します (つまり、単一の SELECT ステートメント内の複数の WHERE 句条件のように動作します)。サプライヤー 1002 も 5 より低い価格の商品を生産しているため、両方の SELECT ステートメントはその行を返します。 UNION を使用すると、重複する行は自動的に抑制されます。

これは UNION のデフォルトの動作ですが、必要に応じて変更できます。実際、一致する行をすべて返したい場合は、 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);

出力:

MySQL 複合クエリでの UNION 照合の例

分析: UNION ALL を使用すると、MySQL は重複行をキャンセルしません。したがって、この例では 9 行が返され、そのうちの 1 行が 2 回表示されます。

UNION と WHERE UNION は、ほとんどの場合、複数の WHERE 条件と同じ働きをします。 UNION ALL は UNION の形式の 1 つで、WHERE 句では実行できない作業を完了します。各条件に一致するすべての行 (重複行を含む) を表示する必要がある場合は、WHERE の代わりに UNION ALL を使用する必要があります。

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

SELECT ステートメントの出力は、ORDER BY 句を使用して並べ替えられます。クエリを UNION と組み合わせる場合、ORDER BY 句は 1 つだけ使用でき、最後の SELECT ステートメントの後に指定する必要があります。結果セットの一部をある方向に並べ替え、別の部分を別の方向に並べ替えるという状況は存在しないため、複数の ORDER BY 句は許可されません。

次の例では、前の UNION によって返された結果を並べ替えます。

入力:

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 複合クエリでの UNION 照合の例分析: この UNION は、最後の SELECT ステートメントの後に ORDER BY 句を使用します。 ORDER BY 句は最後の SELECT ステートメントのみの不可欠な部分であるように見えますが、MySQL は実際にはこれを使用して、すべての SELECT ステートメントによって返されるすべての結果を並べ替えます。

異なるテーブルを結合する。式を簡素化するために、この章の例の結合クエリはすべて同じテーブルを使用します。ただし、UNION を使用した結合クエリは異なるテーブルに適用できます。

以上がMySQL 複合クエリでの UNION 照合の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。