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

UNION句

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

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

2つのクエリがあり、それぞれが同じデータ型の3つの列を返します。目的は、会社内の全員のIdfirst_namelast_nameを表示することです。両方のクエリで同じ列名となるように、Id列もリネームされています。

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

最後に、結果はIdORDER BYによってソートされます。

Note
注意

結果は、両方のテーブルで共通の列であるIdによってソートされます。

UNION を使用すると、「1つの大きなクエリ」が作成され、ORDER BY などの句でさらに操作可能。

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'

FROM セクションでサブクエリを使用することで、より柔軟な操作が可能。最初は難しく感じるかもしれませんが、これを習得すれば複雑なクエリの作成が格段に容易になります。

1. UNION を使用して結果セットを結合する場合、どのような要件を満たす必要がありますか?

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

question mark

UNION を使用して結果セットを結合する場合、どのような要件を満たす必要がありますか?

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

question mark

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

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

すべて明確でしたか?

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

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

セクション 2.  5

AIに質問する

expand

AIに質問する

ChatGPT

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

セクション 2.  5
some-alt