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