概要:このチュートリアルでは、MySQLUNION
演算子を使用して、複数のSELECT
ステートメントから二つ以上の結果セットを組み合わせて単一の結果セットにする方法を学習します。
MySQL UNION operator
MySQLUNION
演算子を使用すると、複数のクエリ結果セットを単一の結果セットに結合できます。, 以下は、UNION
演算子の構文を示しています。
UNION
演算子を使用して複数のクエリの結果セットを結合するには、以下の基本ルールに従う必要があります。
- まず、すべての
SELECT
ステートメントに表示される列の数と順序は同じでなければなりません。 - 次に、列のデータ型は同じか互換性がある必要があります。,
デフォルトでは、UNION
演算子は、DISTINCT
演算子を明示的に指定しなくても、重複する行を削除します。,
次のサンプルテーブルを見てみましょう。t1
およびt2
:
次のステートメントは、t1
およびt2
テーブルから返された結果セットを組み合わせます。
Code language: SQL (Structured Query Language) (sql)
最終結果セットには、クエリによって返される個別の結果セットとは異なる値が含まれています。
Code language: SQL (Structured Query Language) (sql)
値2と3の行は重複しているため、UNION
それらを削除し、一意の値のみを保持しました。,
次のベン図は、t1
およびt2
テーブルから来る二つの結果セットの和集合を示しています。
If UNION ALL
明示的に使用すると、重複する行が利用可能な場合は結果に残ります。 なぜならUNION ALL
重複を処理する必要はないので、UNION DISTINCT
よりも高速に実行されます。,
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
ご覧のとおり、重複はUNION ALL
操作のために結合された結果セットに表示されます。
UNION vs.JOIN
AJOIN
結果セットを水平に結合し、UNION
結果セットを垂直に追加します。,デモ用のpleデータベース:
従業員と顧客の姓と姓を単一の結果セットに組み合わせると、UNION
演算子を次のように使用できます。
Code language: SQL (Structured Query Language) (sql)
出力からわかるように、mysqlUNION
は、最初のSELECT
ステートメントの列名を使用します。出力の列見出し。,
他の列見出しを使用する場合は、次の例に示すように、最初のSELECT
ステートメントで列エイリアスを明示的に使用する必要があります。
この例では、出力に対して最初のクエリの列見出しを使用します。 これは、CONCAT()
関数を使用して、名、スペース、および姓を完全な名前に連結します。,
MySQL UNION and ORDER BY
unionの結果セットをソートする場合は、ORDER BY
最後のSELECT
ステートメントで
各ORDER BY
句を配置した場合SELECT
ステートメントでは、最終結果セットの行の順序には影響しません。,
従業員と顧客を区別するために、次のクエリに示すように列を追加できます。
MySQLには、次のようにORDER BY
句を使用して、列の位置に基づいて結果セットをソートする別のオプションも用意されています。ただし、結果セットを列の位置でソートすることは良い習慣ではありません。
このチュートリアルでは、MySQLUNION
ステートメントを使用して、複数のクエリのデータを単一の結果セットに結合する方法を学習しました。,/p>
- このチュートリアルは役に立ちましたか?
- イェスノ