INTERSECT
CoddyのSQLジャーニー「応用」セクションの一部 — レッスン 17/27。
INTERSECTは、両方の結果セットに含まれる行のみを返します。UNIONと同様に、重複を削除し、両側で一致する列が必要です。
SELECT email FROM newsletter_subs
INTERSECT
SELECT email FROM premium_usersこれは、ニュースレターを購読しており、かつプレミアムユーザーでもあるすべてのメールアドレスを、結合(join)を記述することなく取得します。
なぜわざわざ使うのでしょうか、JOINでも同じことができるのに? 両方が単純なSELECT文であり、単なるidではなく行全体で一致を確認する場合、INTERSECTの方が短く書けます。
チャレンジ
簡単利用可能なテーブルとカラム:
<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_users2つの単純なSELECT間で、行全体を照合する場合は、JOINの代わりにINTERSECTを使用します。
自分で試してみよう
-- INTERSECT の前に各サイドをフィルタリングする
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。