基本情報暗記無料で始める

INTERSECTとは?いんたーせくと

INTERSECTとは、SQLで、2つのSELECT文の結果に共通して現れる行だけを取り出す集合演算子(積集合、共通部分)。「SELECT文A INTERSECT SELECT文B」と書くと、Aの結果にもBの結果にもある行だけが返る。並べる2つのSELECT文は、取り出す列の数をそろえ、対応する列のデータ型を合わせる必要がある。結果の中の重複した行は1行にまとめられる。仲間に、どちらか一方にでもある行を返すUNION(和集合)と、Aにあって Bに無い行を返すEXCEPT(差集合)があり、表を集合として扱う演算の体系である関係代数の「積・和・差」にそれぞれ対応する。

最終更新:2026-10-10

試験情報

基本情報技術者試験の頻出用語/テクノロジ系

別名:INTERSECT演算子

基本情報を最短で暗記・合格する →

背景

表の検索は、1本のSELECT文のWHERE句(取り出す行の条件)で絞り込むのが基本である。しかし「2つの別々の問い合わせの両方に出てくるもの」を求めたいとき、WHERE句だけで書こうとすると、SELECT文の中にもう1本のSELECT文を入れ子にするなど、長く読みにくい文になる。関係データベースの土台である関係代数には和・差・積といった集合の演算があり、それをSQLでそのまま書けるようにしたのがUNION・EXCEPT・INTERSECTである。

具体例

ネット通販の会員分析で、春のセールでも夏のセールでも買った会員(2回とも買ってくれた人)を出す。 SELECT 会員ID FROM 注文 WHERE セール名 = '春' INTERSECT SELECT 会員ID FROM 注文 WHERE セール名 = '夏' 1行目は「注文の表から、春セールの行の会員IDを取り出す」、3行目は「夏セールの行の会員IDを取り出す」という意味で、INTERSECTで両方にある会員IDだけが残る。春の会員IDが{101, 102, 105}、夏が{102, 105, 108}なら、結果は{102, 105}。同じことはWHERE句の条件をANDでつないでも書けない。1つの注文の行のセール名は1つの値しか持たないので、「セール名 = '春' AND セール名 = '夏'」に当てはまる行は0件になる。

試験での引っ掛け

比べられるのは「SELECTで選んだ列すべての値の組」である。SELECT * で行全体を比べると、両方の結果に完全に同じ行が無い限り何も残らない。過去問のように、同じ表から「仕入先ID = 'M002'」の行と「仕入先ID = 'M004'」の行をSELECT * で取り出してINTERSECTすると、片方の行は仕入先IDがM002、もう片方はM004で値が違うので共通の行は無く、ANDで2つの条件を並べた場合と同じく0件になる。また「両方」という言葉につられてORと取り違えないこと。ORで条件をつなぐのは、どちらか一方に当てはまる行を集めるUNION(和)に近い。

関連用語

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

基本情報を最短で暗記・合格する →

試験での特徴
  • 分野:テクノロジ系
  • 比べられるのは「SELECTで選んだ列すべての値の組」である。