用語比較
UNIONとUNION ALLの違い|重複行を除くか、残すか(DS検定)
UNIONとUNION ALLは、どちらもSQLで二つの問い合わせの結果を縦につなげる演算です。違いは、重複した行の扱いにあります。UNIONは重複した行を取り除き、UNION ALLは重複を取り除かず、両方の全行を残します。
重複を除くのがUNION、残すのがUNION ALLと区別するのが出発点です。UNIONは、結果の重複行をDISTINCTと同じ方法で取り除きます。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。
UNIONとUNION ALLの要点
UNION
二つの問い合わせの結果をつなげ、重複した行を取り除く。
UNION ALL
二つの問い合わせの結果をつなげ、重複した行も取り除かずに全行を残す。
違いを表で確認
| 比較軸 | UNION | UNION ALL |
|---|---|---|
| 重複した行 | 取り除く(DISTINCTと同じ扱い) | 取り除かず、全行を残す |
| 結果の行数 | つなげた行数以下になる | 二つの結果の行数の合計になる |
| つなげられる条件 | 列数が同じで、対応する列のデータ型に互換性がある | UNIONと同じ。列数が同じで、データ型に互換性がある |
| 行の順序 | 公式文書は、実際に返る順序は保証されないと説明している | 同じく、実際に返る順序は保証されない |
| 試験で探す語 | 重複を除く、UNION処理 | 重複を残す、全行、ALL |
DS検定の学習に使う書籍(Amazon)
PRどこで迷っているかを切り分ける
同じ形の二つの表を、重複なしで一つにまとめたい人
同じ行が両方の表にあっても一行にしたいときは、UNIONを使います。重複の除去が自動で行われます。
二つの結果の全行を、そのまま残したい人
重複も一つの記録として数えたいときは、UNION ALLを使います。ALLと付けるだけで、重複を取り除く処理がなくなります。
列の数が合わずにエラーになった人
UNIONもUNION ALLも、二つの問い合わせの列数が同じで、対応する列のデータ型に互換性が必要です。公式文書は、この条件をunion compatible(結合可能)と呼んでいます。
具体例で使い分ける
例 1
2月と3月の注文の一覧を一つにまとめ、顧客の重複を除く場合
二つの月の注文の表から、顧客IDの列だけを取り出し、一人一行の一覧にしたい場面です。
- 同じ顧客が両方の月に注文していれば、顧客IDが重複します。
- 一人一行にしたいので、重複を取り除くUNIONが合います。
結論: 重複を除きたいので、UNIONを使います。
例 2
2月と3月の注文を、一件ずつ全部残して一つにまとめる場合
二つの月の注文の表を、注文一件を一行として全部つなげたい場面です。
- 同じ内容の注文が二件あれば、別の注文として両方残す必要があります。
- UNIONだと同じ内容の行が一行に減るため、注文の件数が合わなくなります。
結論: 全行を残したいので、UNION ALLを使います。
問題文から答えを選ぶ手順
- 1
二つの結果の形をそろえる
列数を同じにし、対応する列のデータ型に互換性を持たせます。
- 2
重複した行をどう扱うかを決める
同じ行を一行にまとめたいのか、全部の行を残したいのかを確かめます。
- 3
一行にまとめるならUNION
重複した行が取り除かれます。
- 4
全行を残すならUNION ALL
重複した行も残り、行数は二つの結果の合計になります。
試験での見分け方
- 1UNIONは、二つの問い合わせの結果をつなげて、重複した行を取り除く。
- 2UNION ALLは、重複を取り除かず、両方の全行を残す。
- 3どちらも、列数が同じで対応する列のデータ型に互換性がある問い合わせだけをつなげられる。
誤答しやすい選択肢
UNIONとUNION ALLを、同じ結果になると考える
修正: 重複した行がある場合、結果の行数が変わります。UNIONは重複を除き、UNION ALLは残します。
件数を数えたいのに、UNIONを使う
修正: UNIONは重複した行を一行にまとめるため、件数が減ります。一件ずつ数えるなら、UNION ALLを使います。
列数が違う結果を、UNIONでつなげようとする
修正: 列数が同じで、対応する列のデータ型に互換性がある問い合わせでなければ、つなげられません。
確認問題
Q1二つの問い合わせの結果をつなげ、重複した行を取り除くのはどちらですか?
答え: UNION
公式文書は、UNIONはDISTINCTと同じ方法で重複行を取り除くと説明しています。
Q2重複した行も取り除かず、全行を残すのはどちらですか?
答え: UNION ALL
UNION ALLを使ったときだけ、重複が取り除かれません。
Q3UNIONで二つの問い合わせをつなげる条件は何ですか?
答え: 列数が同じで、対応する列のデータ型に互換性があること
公式文書は、この条件を満たす問い合わせをunion compatibleと呼んでいます。
到達チェック
- UNIONとUNION ALLの重複の扱いの違いを言える
- 二つの結果をつなげる条件を説明できる
- 重複を除きたい場面でUNIONを選べる
- 全行を残したい場面でUNION ALLを選べる
関連ページで確認する
同じ資格で次に知りたいこと
- CSVとJSONの違い|表で持つか、入れ子で持つか(DS検定)
CSVとJSONの違いを、データの持ち方、入れ子の可否、書き方の決まり、使い分けの例で解説。DS検定のデータ出力で問われる形式の選び方と確認問題つきです。
- Webスクレイピングと Web API の違い|画面から取るか、提供口から取るか(DS検定)
Webスクレイピングと Web API の違いを、データの取り方、安定性、使える範囲、注意点で解説。DS検定のデータ収集で問われる静的コンテンツの収集とREST APIの使い分けと確認問題つきです。
- DS検定とPython3エンジニア認定基礎試験の違い(出題範囲・問題数・試験時間・受験料・受験日)
DS検定(100問・100分、一般10,000円税抜)とPython3エンジニア認定基礎試験(40問・60分、7割正解、一般11,000円税込)の違いを、出題範囲、プログラミングの扱い、受験日の決まり方、受験料、先に受ける試験の決め方まで、公式情報に沿って比較します。
よくある質問
QUNIONとUNION ALLの一番大きな違いは何ですか?
重複した行の扱いです。UNIONは重複を取り除き、UNION ALLは重複も含めて全行を残します。
QUNIONとJOINは何が違いますか?
UNIONは二つの結果を縦につなげて行を増やし、JOINは表を結合条件で横に結んで列を増やします。
QUNIONでは、つなげる列の名前が同じである必要がありますか?
公式文書が求める条件は、列数が同じで、対応する列のデータ型に互換性があることです。
QDS検定にUNIONは出ますか?
データサイエンティスト協会のスキルチェックリストに、単一条件による内部結合・外部結合・自己結合とUNION処理ができること(データ加工の★1つ星)が含まれます。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: AI資格ドリル編集部(運営者情報を見る)
