UNIONとは?ゆにおん
UNIONは、SQLで2つのSELECT文の結果を縦につなげて1つの結果にする演算子で、集合の和集合(どちらか一方にでも含まれる行すべて)にあたる。同じ行は1行にまとめられ、重複を残したいときはUNION ALLを使う。つなげる2つの結果は列の数が同じで、対応する列のデータ型がそろっている必要がある。同じ仲間に、両方に含まれる行だけを残すINTERSECT(積集合)と、前の結果から後の結果に含まれる行を除くEXCEPT(差集合)がある。
最終更新:2026-10-10
基本情報を最短で暗記・合格する →背景
1つのSELECT文は、1つの問合せの中で条件に合う行を取り出す。しかし「店舗の会員」と「ネット通販の会員」のように、別々の表に分かれた同じ形のデータをまとめて一覧にしたいとき、1つの問合せでは書きにくい。関係データベースの土台になった関係代数(表を行の集合とみなして計算する理論)には、集合の和(どちらかにある行)・差(片方にだけある行)・積(両方にある行)の演算があり、SQLはそれをUNION・EXCEPT・INTERSECTとして取り入れた。
具体例
表「講義A_履修者(学籍番号, 氏名)」と「講義B_履修者(学籍番号, 氏名)」があるとき、「SELECT 学籍番号, 氏名 FROM 講義A_履修者 UNION SELECT 学籍番号, 氏名 FROM 講義B_履修者」は、AとBの少なくとも一方を履修している学生の一覧になる(日本語訳:Aの履修者とBの履修者を合わせ、両方にいる人は1回だけ出す)。Aに30人、Bに20人、両方を履修している人が5人なら、結果は30+20−5=45行。UNION ALLなら重複を残して50行になる。
試験での引っ掛け
UNIONは表を「縦に」つなぐ(行を足す)。表を「横に」つなぐ(列を足す)のは結合(JOIN)で、別物。過去問では、FROM句に2つの表を並べただけの「SELECT * FROM R, S」(直積:行数はm×n)と、UNION・INTERSECT・EXCEPTを並べて区別させる。UNIONの結果の行数は2つの行数の単純な合計とは限らず、重複を除いた分だけ少なくなる。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。