AI資格ドリル
資格を選ぶ

用語比較

UNIONとUNION ALLの違い|重複行を除くか、残すか(DS検定)

UNIONとUNION ALLは、どちらもSQLで二つの問い合わせの結果を縦につなげる演算です。違いは、重複した行の扱いにあります。UNIONは重複した行を取り除き、UNION ALLは重複を取り除かず、両方の全行を残します。

重複を除くのがUNION、残すのがUNION ALLと区別するのが出発点です。UNIONは、結果の重複行をDISTINCTと同じ方法で取り除きます。

この記事の根拠と出典

各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。

UNIONとUNION ALLの要点

UNION

二つの問い合わせの結果をつなげ、重複した行を取り除く。

UNION ALL

二つの問い合わせの結果をつなげ、重複した行も取り除かずに全行を残す。

違いを表で確認

比較軸UNIONUNION ALL
重複した行取り除く(DISTINCTと同じ扱い)取り除かず、全行を残す
結果の行数つなげた行数以下になる二つの結果の行数の合計になる
つなげられる条件列数が同じで、対応する列のデータ型に互換性があるUNIONと同じ。列数が同じで、データ型に互換性がある
行の順序公式文書は、実際に返る順序は保証されないと説明している同じく、実際に返る順序は保証されない
試験で探す語重複を除く、UNION処理重複を残す、全行、ALL

どこで迷っているかを切り分ける

01

同じ形の二つの表を、重複なしで一つにまとめたい人

同じ行が両方の表にあっても一行にしたいときは、UNIONを使います。重複の除去が自動で行われます。

02

二つの結果の全行を、そのまま残したい人

重複も一つの記録として数えたいときは、UNION ALLを使います。ALLと付けるだけで、重複を取り除く処理がなくなります。

03

列の数が合わずにエラーになった人

UNIONもUNION ALLも、二つの問い合わせの列数が同じで、対応する列のデータ型に互換性が必要です。公式文書は、この条件をunion compatible(結合可能)と呼んでいます。

具体例で使い分ける

例 1

2月と3月の注文の一覧を一つにまとめ、顧客の重複を除く場合

二つの月の注文の表から、顧客IDの列だけを取り出し、一人一行の一覧にしたい場面です。

  • 同じ顧客が両方の月に注文していれば、顧客IDが重複します。
  • 一人一行にしたいので、重複を取り除くUNIONが合います。

結論: 重複を除きたいので、UNIONを使います。

例 2

2月と3月の注文を、一件ずつ全部残して一つにまとめる場合

二つの月の注文の表を、注文一件を一行として全部つなげたい場面です。

  • 同じ内容の注文が二件あれば、別の注文として両方残す必要があります。
  • UNIONだと同じ内容の行が一行に減るため、注文の件数が合わなくなります。

結論: 全行を残したいので、UNION ALLを使います。

問題文から答えを選ぶ手順

  1. 1

    二つの結果の形をそろえる

    列数を同じにし、対応する列のデータ型に互換性を持たせます。

  2. 2

    重複した行をどう扱うかを決める

    同じ行を一行にまとめたいのか、全部の行を残したいのかを確かめます。

  3. 3

    一行にまとめるならUNION

    重複した行が取り除かれます。

  4. 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を選べる

同じ資格で次に知りたいこと

よくある質問

QUNIONとUNION ALLの一番大きな違いは何ですか?

A

重複した行の扱いです。UNIONは重複を取り除き、UNION ALLは重複も含めて全行を残します。

QUNIONとJOINは何が違いますか?

A

UNIONは二つの結果を縦につなげて行を増やし、JOINは表を結合条件で横に結んで列を増やします。

QUNIONでは、つなげる列の名前が同じである必要がありますか?

A

公式文書が求める条件は、列数が同じで、対応する列のデータ型に互換性があることです。

QDS検定にUNIONは出ますか?

A

データサイエンティスト協会のスキルチェックリストに、単一条件による内部結合・外部結合・自己結合とUNION処理ができること(データ加工の★1つ星)が含まれます。

次に見る比較

執筆: AI資格ドリル編集部(運営者情報を見る)