データベースでデータを処理するとき、SQLで集合演算子を使用して、2つ以上のSELECTステートメントを組み合わせて要件に従ってデータを取得する傾向があります。 SQL UNIONに関するこの記事では、次の順序でデータを取得するために使用されるUNION演算子について説明します。
- SQL UNION演算子とは何ですか?
- 構文:
- UNION構文
- UNIONALL構文
- UNIONとUNIONALLの違い
- SQL UNIONの例:
- UNIONオペレーターの例
- UNIONALL演算子の例
- SQLエイリアスを使用したUNION
- WHERE句を使用したUNION
- WHERE句を使用したUNIONALL
- 結合との結合
- JOINSを使用したすべてのユニオン
始めましょう!
SQL UNION演算子とは何ですか?
名前が示すように、この演算子/句は、2つ以上のSELECTステートメントの結果を組み合わせるために使用されます。ここで、UNIONステートメント内で使用される各SELECTステートメントは、同じ順序で同じ数の列を持っている必要があります。また、SELECTステートメントに存在するすべての列は、同様のデータ型である必要があります。
UNION句は、出力として一意の値のみを提供します。念のため、重複する値が必要な場合は、UNIONALL句を使用する必要があります。
SQL UNIONに関するこの記事に進んで、構文を理解しましょう。
SQLUNION構文
UNION構文
SELECT Column1, Column2, Column3, ..., ColumnN FROM Table1 UNION SELECT Column1, Column2, Column3, ..., ColumnN FROM Table2;
UNIONALL構文
SELECT Column1, Column2, Column3, ..., ColumnN FROM Table1 UNION ALL SELECT Column1, Column2, Column3, ..., ColumnN FROM Table2;
この記事に進んで、UNIONとUNIONALLの違いを理解しましょう。
SQLUNIONとUNIONALLの違い
UNION | UNION ALL |
2つ以上の結果セットを組み合わせて、重複する値を保持しません。 | 2つ以上の結果セットを組み合わせて、重複した値を保持します。 |
Syntax: UNION | Syntax: UNION ALL |
次に、SQL UNIONに関するこの記事では、この演算子のさまざまな使用方法を理解しましょう。
SQLUNIONおよびUNIONALLの例
理解を深めるために、次の表を検討してさまざまな例を示します。
従業員テーブル
EmpID | 名前 | EmpAge | 都市 | PostalCode | 国 |
1 | エマ | 23 | ベルリン | 12109 | ドイツ |
2 | Rahul | 26 | ムンバイ | 400015 | インド |
3 | Aayra | 24 | ニューヨーク | 10014 | 米国 |
4 | ジョン | 32 | ロンドン | E1 7AE | 英国 |
5 | デレク | 29 | ニューヨーク | 10012 | 米国 |
プロジェクトテーブル
ProjectID | 名前 | WorkingDays | 都市 | PostalCode | 国 |
1 | プロジェクト1 | 10 | ベルリン | 12109 | ドイツ |
2 | プロジェクト2 | 7 | ムンバイ | 400015 | インド |
3 | プロジェクト3 | 20 | デリー | 110006 | インド |
4 | プロジェクト4 | 15 | ムンバイ | 400015 | インド |
5 | プロジェクト5 | 28 | ベルリン | 12109 | ドイツ |
例から始めましょう。
SQLUNIONの例
UNION演算子の例
EmployeesandProjectsテーブルから個別の都市を取得するクエリを記述します。
SELECT City FROM Employees UNION SELECT City FROM Projects ORDER BY City;
出力:
都市 |
ベルリン |
デリー |
ロンドン |
ムンバイ |
ニューヨーク |
UNIONALL演算子の例
EmployeesandProjectsテーブルから都市を取得するためのクエリを記述します。ここでは、重複する値を含める必要があります。
SELECT City FROM Employees UNION ALL SELECT City FROM Projects ORDER BY City;
出力:
都市 |
ベルリン |
ベルリン |
ベルリン |
デリー |
ロンドン |
ムンバイ |
ムンバイ
|
ムンバイ |
ニューヨーク |
ニューヨーク |
この記事の次の記事では、SQLエイリアスでUNION句を使用する方法を理解しましょう。
SQLエイリアスを使用したUNION
SQLエイリアスは、テーブルまたは列に一時的な名前を付けるために使用されます。それでは、すべてのユニークな従業員とプロジェクトを一覧表示するクエリを作成しましょう。
SELECT 'Employee' AS Type, Name, City, Country FROM Employees UNION SELECT 'Project', Name, City, Country FROM Projects;
出力:
タイプ | 名前 | 都市 | 国 |
従業員 | エマ | ベルリン | ドイツ |
従業員 | Rahul | ムンバイ | インド |
従業員 | Aayra | ニューヨーク | 米国 |
従業員 | ジョン | ロンドン | 英国 |
従業員 | デレク | ニューヨーク | 米国 |
プロジェクト | プロジェクト1 | ベルリン | ドイツ |
プロジェクト | プロジェクト2 | ムンバイ | インド |
プロジェクト | プロジェクト3 | デリー | インド |
プロジェクト | プロジェクト4 | ムンバイ | インド |
プロジェクト | プロジェクト5 | ベルリン | ドイツ |
WHERE句を使用したUNION
従業員とプロジェクトの両方のテーブルから、個別のインドの都市とその郵便番号を取得するためのクエリを記述します。
SELECT City, PostalCode, Country FROM Employees WHERE Country='India' UNION SELECT City, PostalCode, Country FROM Projects WHERE Country='India' ORDER BY City;
出力:
都市 | PostalCode | 国 |
デリー | 110006 | インド |
ムンバイ | 400015 | インド |
WHERE句を使用したUNIONALL
重複する値が許可されているEmployeesテーブルとProjectsテーブルの両方からインドの都市とその郵便番号を取得するクエリを記述します
SELECT City, PostalCode, Country FROM Employees WHERE Country='India' UNION ALL SELECT City, PostalCode, Country FROM Projects WHERE Country='India' ORDER BY City;
出力:
都市 | PostalCode | 国 |
デリー | 110006 | インド |
ムンバイ | 400015 | インド |
ムンバイ | 400015 | インド |
ムンバイ | 400015 | インド |
この記事を進めて、JOINSでUNIONおよびUNIONALL句を使用する方法を理解しましょう。 SQLのJOINSは、2つ以上のテーブルの関連する列に基づいて、それらのテーブルの行を結合するために使用されるコマンドです。
結合との結合
SQL UNION演算子をSQLJOINSとともに使用して、2つの異なるテーブルからデータを取得できます。例として、次のテーブルとEmployeesテーブルを検討します。
ProjectDetailsテーブル
PID | WorkingDays | EmpID | CostforProject |
11 | 12 | 4 | 20000 |
22 | 16 | 3 | 35000 |
33 | 30 | 1 | 60000 |
44 | 25 | 3 | 45000 |
55 | 21 | 1 | 50000 |
SELECT EmpID, Name, CostforProject FROM Employees LEFT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID UNION SELECT EmpID, Name, CostforProject FROM Employees RIGHT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID;
出力:
EmpID | 名前 | CostforProject |
1 | エマ | 60000 |
1 | エマ | 50000 |
2 | Rahul | NULL |
3 | Aayra | 35000 |
3 | Aayra | 45000 |
4 | ジョン | 20000 |
5 | デレク | NULL |
UNION ALL with JOINS
重複する値が許可されているEmployeesおよびProjectDetailsテーブルからEmpID、Name、およびCostforProjectを取得するクエリを記述します。
SELECT EmpID, Name, CostforProject FROM Employees LEFT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID UNION ALL SELECT EmpID, Name, CostforProject FROM Employees RIGHT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID;
出力:
EmpID | 名前 | CostforProject |
1 | エマ | 60000 |
1 | エマ | 50000 |
2 | Rahul | NULL |
3 | Aayra | 35000 |
3 | Aayra | 45000 |
4 | ジョン | 20000 |
5 | デレク | NULL |
4 | ジョン | 20000 |
3 | Aayra | 35000 |
1 | エマ | 60000 |
3 | Aayra | 35000 |
1 | エマ | 50000 |
これで、SQLUNIONに関するこの記事は終わりです。 SQLUNIONに関するこの記事を楽しんでいただけたでしょうか。 UNIONコマンドとUNIONALLコマンドを使用してクエリを作成するさまざまな方法を見てきました。MySQLについて詳しく知り、このオープンソースのリレーショナルデータベースについて知りたい場合は、MySQLDBAを確認してください。認定トレーニング インストラクター主導のライブトレーニングと実際のプロジェクトの経験が付属しています。このトレーニングは、MySQLを深く理解し、主題をマスターするのに役立ちます。
質問がありますか? 「SQLUNION」のコメントセクションでそのことを伝えてください。折り返しご連絡いたします。