MySQL UNION – 完全なチュートリアル

ユニオンとは何ですか?

ユニオンは、複数の SELECT クエリの結果を統合した結果セットに結合します。

これが機能するための唯一の要件は、結合する必要があるすべての SELECT クエリの列の数が同じであることです。

次のような XNUMX つのテーブルがあるとします。

MySQL ユニオンMySQL ユニオン

次に、DISTINCT を使用して両方のテーブルを結合する UNION クエリを作成しましょう。

SELECT column1, column2 FROM `table1`
UNION DISTINCT
SELECT  column1,column2  FROM `table2`;

ここでは重複行が削除され、一意の行のみが返されます。

ユニオンディスティンクト

注: MySQL は、何も指定されていない場合、UNION クエリを実行するときにデフォルトとして DISTINCT 句を使用します。

次に、ALL を使用して両方のテーブルを結合する UNION クエリを作成しましょう。

SELECT `column1`,` column1` FROM `table1`
UNION ALL
SELECT ` column1`,` column1`  FROM `table2`;

ここでは ALL を使用しているため、重複した行が含まれています。

ユニオンオール

ユニオンを使用する理由

データベース設計に欠陥があり、同じ目的で XNUMX つの異なるテーブルを使用しているとします。 これら XNUMX つのテーブルを XNUMX つに統合し、新しいテーブルに重複するレコードを排除したいと考えています。 このような場合には UNION を使用できます。

まとめ

  • UNION コマンドは、複数の SELECT クエリの結果を、すべての選択クエリの行を含む XNUMX つのクエリに結合するために使用されます。
  • 列の数とデータ型 SELECT ステートメント UNION コマンドが機能するには、同じである必要があります。
  • DISTINCT 句は、UNION クエリの結果セットから重複する値を削除するために使用されます。 MySQL は、何も指定されていない場合、UNION クエリを実行するときにデフォルトとして DISTINCT 句を使用します。
  • ALL 句は、UNION クエリ内の重複行をすべて返すために使用されます。

MySQLワークベンチを使用した実践例

myFlixDB で結合しましょう

Members テーブルの members_number と full_names

 

映画テーブルの movie_id と title

以下を使用できますwing クエリー

SELECT `membership_number`,`full_names` FROM `members`
UNION
SELECT `movie_id`,`title` FROM `movies`;

上記のスクリプトを実行すると、 MySQLワークベンチ myflixdb に対しては次のような結果が得られますwing 結果を以下に示します。

membership_number full_names
1 Janet Jones
2 Janet Smith Jones
3 Robert Phil
4 Gloria Williams
5 Leonard Hofstadter
6 Sheldon Cooper
7 Rajesh Koothrappali
8 Leslie Winkle
9 Howard Wolowitz
16 67% Guilty
6 Angels and Demons
4 Code Name Black
5 Daddy's Little Girls
7 Davinci Code
2 Forgetting Sarah Marshal
9 Honey mooners
19 movie 3
1 Pirates of the Caribean 4
18 sample movie
17 The Great Dictator
3 X-Men