INTERSECT
Часть раздела Продвинутый уровень путешествия по SQL на Coddy — урок 17 из 27.
INTERSECT возвращает только те строки, которые присутствуют в обоих наборах результатов. Как и UNION, он удаляет дубликаты и требует соответствия столбцов с каждой стороны.
SELECT email FROM newsletter_subs
INTERSECT
SELECT email FROM premium_usersЭто каждый адрес электронной почты, который одновременно подписан на рассылку и является премиум-пользователем, без написания JOIN.
Зачем это нужно, когда JOIN тоже может это сделать? INTERSECT короче, когда обе стороны — это простые SELECT и вы выполняете сопоставление по всей строке, а не только по id.
Задание
ЛегкоДоступные таблицы и столбцы:
<strong>newsletter</strong>:<strong>email</strong>,<strong>active</strong><strong>premium</strong>:<strong>email</strong>,<strong>plan</strong>
Верните адреса электронной почты (emails), которые значатся как активные подписчики рассылки (active = 1) и как премиум-пользователи с планом 'pro'. Отсортируйте по алфавиту.
Шпаргалка
INTERSECT возвращает только те строки, которые присутствуют в обоих наборах результатов (дубликаты удаляются, столбцы должны совпадать):
SELECT email FROM newsletter_subs
INTERSECT
SELECT email FROM premium_usersИспользуйте INTERSECT вместо JOIN, когда нужно сопоставить целые строки в двух простых SELECT.
Попробуйте сами
-- отфильтровать каждую сторону перед INTERSECT
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.