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

次のクエリを使用できます

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

上記のスクリプトを実行すると、 MySQL 作業台 myflixdb に対して実行すると、以下に示す結果が得られます。

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