UNION句
メニューを表示するにはスワイプしてください
SQLクエリを必要とするクライアントから注目を集めています。JOINsに進む前に、複数のテーブルを結合するために不可欠なUNION句について学びます。
SQLのUNIONは、2つ以上のSELECTクエリの結果を1つの結果セットに結合するために使用されます。複数のクエリからの行を1つの結果セットとしてまとめることができます。
UNIONを使用する際の重要なポイント:
-
列数と順序:
UNIONで結合するすべてのクエリは、同じ列数かつ同じ順序である必要があります。 -
データ型: 各クエリの列は互換性のあるデータ型でなければなりません。
-
重複行: デフォルトでは、
UNIONは重複する行を削除します。重複を保持したい場合はUNION ALLを使用します。
UNION句を正しく使用してテーブルを結合する方法をより理解しやすくするために、contractorsに関する情報を含む追加テーブルを導入します。
ここには多くの情報はなく、first_name、last_name、emailのみが含まれています。
このテーブルはemployeesテーブルと類似点があることがわかります。UNION句を使うことで、これら2つのテーブルを結合し、例えば会社に関与している従業員と契約者のすべての名前と姓のリストを表示できます。
これを行うために、UNION句を使用します:
12345678(SELECT employee_id as id, first_name, last_name FROM employees) UNION (SELECT contractor_id as id, first_name, last_name FROM contractors) ORDER BY id
内容の詳細:
2つのクエリがあり、それぞれ3つのカラムを同じデータ型で返します。全社員のId、first_name、last_nameを表示します。また、両方のクエリでIdカラムの名前を統一しています。
その後、UNIONを使用してこれらのクエリの結果を結合し、重複を削除します(この例では重複はありません)。
最後に、IdでORDER BYによる並び替えを行います。
Idで並び替えを行っています。これは両方のテーブルに共通するカラムです。
UNIONを使用した後は、ORDER BYなどの句でさらに操作できる「1つの大きなクエリ」になります。
WHEREで結合したテーブルには、直接GROUP BYやUNIONを使用できません。これらの句を適用するには、FROM句内でサブクエリを使用する必要があります。以下はその方法の例です。
123456789SELECT id, first_name, last_name FROM ( SELECT employee_id AS id, first_name, last_name FROM employees UNION SELECT contractor_id AS id, first_name, last_name FROM contractors ) AS combined WHERE first_name = 'Jane'
FROM句内でサブクエリを使うことで、より柔軟な操作が可能になります。最初は難しく感じるかもしれませんが、これを習得すれば複雑なクエリの作成がずっと簡単になります。
1. UNION を使用して結果セットを結合するために満たすべき要件は何ですか?
2. UNION 句はデフォルトで重複する行をどのように扱いますか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください