基于一列删除重复项并基于另一个表中的数据进行过滤

agxfikkp  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(370)

我有两个表,它们存储基于表单提交和api端点返回的数据。我正在尝试编写一个查询,以便将表a中的所有数据都删除,同时删除存储在表b中的测试提交。以下是删除了不相关行的表结构表结构:
表a

submission_id
email
campaign_id
rep_name

表b

email
campaign_id
is_test

表b为每个电子邮件地址包含一行关于提交的数据。
表a应该包含每个电子邮件地址和活动id的1-4行,在rep\u name列中有不同的数据,但是表a中有重复的行,我希望通过查询删除这些行。前任。

Table A Data
    submission_id    email             campaign_id    rep_name
    1                test@test.com     campaign_1     john smith
    2                test@test.com     campaign_1     mary joe
    3                test@test.com     campaign_1     kevin guy
    4                test@test.com     campaign_1     john smith
    5                test@test.com     campaign_1     mary joe
    6                test@test.com     campaign_1     kevin guy
    7                real@real.com     campaign_1     john smith
    8                real@real.com     campaign_1     mary joe
    9                real@real.com     campaign_1     kevin guy
    10               real@real.com     campaign_1     john smith
    11               real@real.com     campaign_1     mary joe
    12               real@real.com     campaign_1     kevin guy
Table B Data
    email             campaign_id    is_test
    test@test.com     campaign_1     Y
    real@real.com     campaign_1     N
    real@real.com     campaign_2     Y
    real@real.com     campaign_2     N
    test@test.com     campaign_2     Y

期望的结果

real@real.com     campaign_1     john smith
real@real.com     campaign_1     mary joe
real@real.com     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';

6ojccjat

6ojccjat1#

这回答了问题的原始版本。
像这样:

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 条款。

相关问题