Удаление дубликатов на основе одного столбца и фильтрация на основе данных в другой таблице

0

У меня есть 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';

Теги:

1 ответ

1

ЭТО ОТВЕЧАЕТ ОРИГИНАЛЬНУЮ ВЕРСИЮ ВОПРОСА.

Что-то вроде этого:

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.

  • 0
    к сожалению отличное не работает. Я должен был включить, что есть идентификатор представления, который уникален для каждой строки, поэтому отдельный не работает должным образом в этом столбце
  • 0
    Поэтому обновите данные примера и ожидаемый результат с помощью этого идентификатора представления столбца @mannr
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню