У меня есть 2 таблицы, которые хранят данные на основе представлений формы и возвращаются из конечной точки API. Я пытаюсь написать запрос, чтобы дать мне всю таблицу данных A с удаленными дубликатами, а также удалить тестовые представления, которые хранятся в таблице B. Ниже приведены структуры табличных структур с ненулевыми строками:
Таблица A
submission_id
email
campaign_id
rep_name
Таблица B
email
campaign_id
is_test
Таблица B содержит одну строку на адрес электронной почты с данными об этом представлении.
Таблица A должна содержать от 1 до 4 строк для каждого адреса электронной почты & campaign_id с разными данными в столбце rep_name, однако у меня есть повторяющиеся строки в таблице A, которые я хотел бы удалить с помощью запроса. ех.
Table A Data submission_id email campaign_id rep_name 1 [email protected] campaign_1 john smith 2 [email protected] campaign_1 mary joe 3 [email protected] campaign_1 kevin guy 4 [email protected] campaign_1 john smith 5 [email protected] campaign_1 mary joe 6 [email protected] campaign_1 kevin guy 7 [email protected] campaign_1 john smith 8 [email protected] campaign_1 mary joe 9 [email protected] campaign_1 kevin guy 10 [email protected] campaign_1 john smith 11 [email protected] campaign_1 mary joe 12 [email protected] campaign_1 kevin guy
Table B Data email campaign_id is_test [email protected] campaign_1 Y [email protected] campaign_1 N [email protected] campaign_2 Y [email protected] campaign_2 N [email protected] campaign_2 Y
Желаемый результат
[email protected] campaign_1 john smith
[email protected] campaign_1 mary joe
[email protected] campaign_1 kevin guy
Вот моя текущая попытка запроса, которая не приводит к удалению дубликатов.
SELECT a.* FROM table_a a LEFT OUTER JOIN (SELECT email FROM table_b WHERE is_test='N' AND campaign_id='some_campaign_id') as b ON a.email=b.email WHERE a.campaign_id='some_campaign_id';
ЭТО ОТВЕЧАЕТ ОРИГИНАЛЬНУЮ ВЕРСИЮ ВОПРОСА.
Что-то вроде этого:
select distinct a.email, a.campaign_id, a.rep_name
from a join
b
on a.email = b.email and a.campaign_id = b.campaign_id
where b.is_test = 'N';
Вы также можете добавить фильтр для кампании в предложение where
.