Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ UNION句 | ネストされたサブクエリ
中級SQL

bookUNION句

メニューを表示するにはスワイプしてください

SQLクエリを必要とするクライアントから注目を集めています。JOINsに進む前に、複数のテーブルを結合するために不可欠なUNION句について学びます。

Note
定義

SQLのUNIONは、2つ以上のSELECTクエリの結果を1つの結果セットに結合するために使用されます。複数のクエリからの行を1つの結果セットとしてまとめることができます。

UNIONを使用する際の重要なポイント:

  1. 列数と順序: UNIONで結合するすべてのクエリは、同じ列数かつ同じ順序である必要があります。

  2. データ型: 各クエリの列は互換性のあるデータ型でなければなりません。

  3. 重複行: デフォルトでは、UNIONは重複する行を削除します。重複を保持したい場合はUNION ALLを使用します。

UNION句を正しく使用してテーブルを結合する方法をより理解しやすくするために、contractorsに関する情報を含む追加テーブルを導入します。

ここには多くの情報はなく、first_namelast_nameemailのみが含まれています。

このテーブルは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
copy

内容の詳細:

2つのクエリがあり、それぞれ3つのカラムを同じデータ型で返します。全社員のIdfirst_namelast_nameを表示します。また、両方のクエリでIdカラムの名前を統一しています。

その後、UNIONを使用してこれらのクエリの結果を結合し、重複を削除します(この例では重複はありません)。

最後に、IdORDER BYによる並び替えを行います。

Note
注記

Idで並び替えを行っています。これは両方のテーブルに共通するカラムです。

UNIONを使用した後は、ORDER BYなどの句でさらに操作できる「1つの大きなクエリ」になります。

WHEREで結合したテーブルには、直接GROUP BYUNIONを使用できません。これらの句を適用するには、FROM句内でサブクエリを使用する必要があります。以下はその方法の例です。

123456789
SELECT 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'
copy

FROM句内でサブクエリを使うことで、より柔軟な操作が可能になります。最初は難しく感じるかもしれませんが、これを習得すれば複雑なクエリの作成がずっと簡単になります。

1. UNION を使用して結果セットを結合するために満たすべき要件は何ですか?

2. UNION 句はデフォルトで重複する行をどのように扱いますか?

question mark

UNION を使用して結果セットを結合するために満たすべき要件は何ですか?

正しい答えを選んでください

question mark

UNION 句はデフォルトで重複する行をどのように扱いますか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  5

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 2.  5
some-alt