Menu
Coddy logo textTech

INTERSECT

CoddyのSQLジャーニー「応用」セクションの一部 — レッスン 17/27。

INTERSECTは、両方の結果セットに含まれる行のみを返します。UNIONと同様に、重複を削除し、両側で一致する列が必要です。

SELECT email FROM newsletter_subs
INTERSECT
SELECT email FROM premium_users

これは、ニュースレターを購読しており、かつプレミアムユーザーでもあるすべてのメールアドレスを、結合(join)を記述することなく取得します。

なぜわざわざ使うのでしょうかJOINでも同じことができるのに? 両方が単純なSELECT文であり、単なるidではなく行全体で一致を確認する場合、INTERSECTの方が短く書けます。

challenge icon

チャレンジ

簡単

利用可能なテーブルとカラム:

  • <strong>newsletter</strong>: <strong>email</strong>, <strong>active</strong>
  • <strong>premium</strong>: <strong>email</strong>, <strong>plan</strong>

active なニュースレター購読者(active = 1かつ'pro' プランのプレミアムユーザーとして登録されているメールアドレスを返してください。アルファベット順に並べ替えてください。

チートシート

INTERSECTは、両方の結果セットに含まれる行のみを返します(重複は削除され、列が一致している必要があります):

SELECT email FROM newsletter_subs
INTERSECT
SELECT email FROM premium_users

2つの単純なSELECT間で、行全体を照合する場合は、JOINの代わりにINTERSECTを使用します。

自分で試してみよう

-- INTERSECT の前に各サイドをフィルタリングする
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

応用のすべてのレッスン