UNION と UNION ALL は、複数のテーブルからの結果セットを結合するためにデータベースで使用される 2 つの最も重要な SQL 演算子です。 これらの演算子を使用すると、複数の SELECT クエリを使用して目的の結果を取得し、それらを最終出力に結合することができます。 。この記事では、それらが互いにどのように異なるのかを見ていきます。比較する前に、これらの演算子について簡単に説明します。
ユニオンオペレーターとは何ですか?
MySQL のユニオン演算子を使用すると、複数の SELECT クエリからの 2 つ以上の結果を 1 つの結果セットに結合できます。デフォルトの機能があります 重複した行を削除する テーブルから。この演算子の構文では、常に最初の SELECT ステートメントの列の名前が出力の列名として使用されます。
MySQL 組合は次の基本規則に従わなければなりません。
- 列の数と順序はすべてのクエリで同じである必要があります。
- 各選択クエリの対応する列位置には、互換性のあるデータ型が必要です。
- 異なる SELECT クエリで選択された列名は同じ順序である必要があります。
- 最初の SELECT クエリの列名が出力の列名になります。
注: Union と Join は異なることを知っておく必要があります。
- JOIN は複数の異なるテーブルのデータを結合しますが、UNION は複数の同様のテーブルのデータを結合します。
- JOIN は出力を水平方向に追加するのに対し、UNION は結果セットを垂直方向に結合します。
以下の視覚的表現は、それをより明確に説明しています。
Union 演算子の詳細については、ここをクリックしてください。
ユニオンオールとは何ですか?
UNION ALL 演算子は、複数の SELECT クエリからの 2 つ以上の結果を結合し、すべてのレコードを 1 つの結果セットに返します。 SELECT ステートメントの出力から重複行は削除されません。
それは次の視覚的表現で理解できます。
ユニオン対ユニオンオールオペレーター
次の比較表は、それらの主な違いを簡単に説明したものです。
連合 | すべてを結合する |
---|---|
複数のテーブルからの結果セットを結合し、 個別のレコードを返します 単一の結果セットにまとめられます。 | 複数のテーブルからの結果セットを結合し、 すべてのレコードを返します 単一の結果セットにまとめられます。 |
以下が基本です 構文 UNION 演算子の: table1 から列リストを選択します 連合 table2 から列リストを選択します。 | 以下が基本です 構文 UNION ALL 演算子の: table1 から列リストを選択します すべてを結合する table2 から列リストを選択します。 |
出力から重複行を削除するデフォルト機能があります。 | 出力から重複行を削除する機能はありません。 |
その パフォーマンスが遅い 重複レコードを見つけて削除するには時間がかかるためです。 | その パフォーマンスが速い 重複行は削除されないためです。 |
ほとんどのデータベース ユーザーは、この演算子を使用することを好みます。 | ほとんどのデータベース ユーザーは、この演算子の使用を好みません。 |
Union と Union All の例
例を通じて、Union 演算子と Union All 演算子の違いを理解してみましょう。 「」という名前のテーブルがあるとします。 学生 ' そして ' 学生2 ' これには次のデータが含まれます。
表: 学生
表: 学生2
次の SQL ステートメントは、 明確な都市名 UNION クエリを使用して両方のテーブルから次のように取得します。
SELECT City FROM student UNION SELECT City FROM student2 ORDER BY City;
上記のステートメントを実行すると、Union 演算子は個別の値のみを返すため、次の出力が得られます。
次の SQL ステートメントが返されます 重複を含むすべての都市名 UNION ALL クエリを使用して両方のテーブルから取得します。
SELECT City FROM student UNION ALL SELECT City FROM student2 ORDER BY City;
上記のステートメントを実行すると、Union All 演算子が個別の値を削除せずにレコード全体を返すため、次の出力が得られます。