logo

ユニオンとユニオンオールの違い

UNION と UNION ALL は、複数のテーブルからの結果セットを結合するためにデータベースで使用される 2 つの最も重要な SQL 演算子です。 これらの演算子を使用すると、複数の SELECT クエリを使用して目的の結果を取得し、それらを最終出力に結合することができます。 。この記事では、それらが互いにどのように異なるのかを見ていきます。比較する前に、これらの演算子について簡単に説明します。

ユニオンオペレーターとは何ですか?

MySQL のユニオン演算子を使用すると、複数の SELECT クエリからの 2 つ以上の結果を 1 つの結果セットに結合できます。デフォルトの機能があります 重複した行を削除する テーブルから。この演算子の構文では、常に最初の SELECT ステートメントの列の名前が出力の列名として使用されます。

MySQL 組合は次の基本規則に従わなければなりません。

  • 列の数と順序はすべてのクエリで同じである必要があります。
  • 各選択クエリの対応する列位置には、互換性のあるデータ型が必要です。
  • 異なる SELECT クエリで選択された列名は同じ順序である必要があります。
  • 最初の SELECT クエリの列名が出力の列名になります。

注: Union と Join は異なることを知っておく必要があります。

  1. JOIN は複数の異なるテーブルのデータを結合しますが、UNION は複数の同様のテーブルのデータを結合します。
  2. JOIN は出力を水平方向に追加するのに対し、UNION は結果セットを垂直方向に結合します。

以下の視覚的表現は、それをより明確に説明しています。

ユニオン vs ユニオンオール

Union 演算子の詳細については、ここをクリックしてください。

ユニオンオールとは何ですか?

UNION ALL 演算子は、複数の SELECT クエリからの 2 つ以上の結果を結合し、すべてのレコードを 1 つの結果セットに返します。 SELECT ステートメントの出力から重複行は削除されません。

それは次の視覚的表現で理解できます。

ユニオン vs ユニオンオール

ユニオン対ユニオンオールオペレーター

次の比較表は、それらの主な違いを簡単に説明したものです。

連合 すべてを結合する
複数のテーブルからの結果セットを結合し、 個別のレコードを返します 単一の結果セットにまとめられます。 複数のテーブルからの結果セットを結合し、 すべてのレコードを返します 単一の結果セットにまとめられます。
以下が基本です 構文 UNION 演算子の:
table1 から列リストを選択します
連合
table2 から列リストを選択します。
以下が基本です 構文 UNION ALL 演算子の:
table1 から列リストを選択します
すべてを結合する
table2 から列リストを選択します。
出力から重複行を削除するデフォルト機能があります。 出力から重複行を削除する機能はありません。
その パフォーマンスが遅い 重複レコードを見つけて削除するには時間がかかるためです。 その パフォーマンスが速い 重複行は削除されないためです。
ほとんどのデータベース ユーザーは、この演算子を使用することを好みます。 ほとんどのデータベース ユーザーは、この演算子の使用を好みません。

Union と Union All の例

例を通じて、Union 演算子と Union All 演算子の違いを理解してみましょう。 「」という名前のテーブルがあるとします。 学生 ' そして ' 学生2 ' これには次のデータが含まれます。

表: 学生

ユニオン vs ユニオンオール

表: 学生2

ユニオン vs ユニオンオール

次の SQL ステートメントは、 明確な都市名 UNION クエリを使用して両方のテーブルから次のように取得します。

 SELECT City FROM student UNION SELECT City FROM student2 ORDER BY City; 

上記のステートメントを実行すると、Union 演算子は個別の値のみを返すため、次の出力が得られます。

ユニオン vs ユニオンオール

次の SQL ステートメントが返されます 重複を含むすべての都市名 UNION ALL クエリを使用して両方のテーブルから取得します。

 SELECT City FROM student UNION ALL SELECT City FROM student2 ORDER BY City; 

上記のステートメントを実行すると、Union All 演算子が個別の値を削除せずにレコード全体を返すため、次の出力が得られます。

ユニオン vs ユニオンオール