MySQL UNION – 完全なチュートリアル
ユニオンとは何ですか?
ユニオンは、複数の SELECT クエリの結果を統合した結果セットに結合します。
これが機能するための唯一の要件は、結合する必要があるすべての SELECT クエリの列の数が同じであることです。
次のような XNUMX つのテーブルがあるとします。
次に、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 |