我有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 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';
答案 0 :(得分: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
子句中为广告系列添加过滤器。