需要一些MySQL查询帮助。
如果记录中有重复的电子邮件字段,则只保留具有STATUS = ACTIVE的行,同时仍显示所有其他记录。
STATUS EMAIL
—-------------------------------
active p1@email.com
—-------------------------------
inactive p1@email.com
—-------------------------------
active p2@email.com
—-------------------------------
active p3@email.com
—-------------------------------
active p4@email.com
—-------------------------------
Inactive p4@email.com
答案 0 :(得分:1)
假设有一些事情:
基本上,子查询确定哪些电子邮件是重复的。外部查询使用它来仅选择那些具有重复电子邮件的记录。
select *
from
email_status a
inner join
(
select email, count(email)
from email_status
group by email
having count(email) > 1
) b
on a.email = b.email
where status = 'active'
编辑:根据下面的回复,选择的唯一标准变为status =' active'假设给定电子邮件只能激活1条记录。所需要的只是where子句:
SELECT *
FROM email_status
WHERE status = 'active'
答案 1 :(得分:0)
以下查询将起作用:
select
(case when count(distinct status) = 2 then 'active'
else status
end
) as status,
email
from
yourTableName
group by email;
答案 2 :(得分:0)
我提供了两个查询:
选择a。* FROM代理商a INNER JOIN代理b ON b.EMAIL = a.EMAIL 在哪里a.id<> b.id AND LCASE(a.STATUS)='不活跃';
DELETE a FROM agents a
INNER JOIN agents b ON b.EMAIL = a.EMAIL
WHERE a.id <> b.id AND LCASE(a.STATUS)='inactive';