mysql:内部查询在selectif语句中不起作用

时间:2015-12-24 12:55:23

标签: mysql sql if-statement select join

如果电子邮件被列入黑名单,我希望以下查询的结果为Y,否则运行内部查询并返回特定设施名称。

printf("Output Pipe\n");

如果emailBlacklisted在Domain表中为N,则查询返回与RESULT相同的内部查询。请帮忙

2 个答案:

答案 0 :(得分:1)

通常情况下,您只需返回设施名称即可:

select f.facilityname
from facility f inner join
     domainfacility df
     on a.facility_ID = b.facility_facility_ID inner join
     domain d
     on df.domain_Domain_ID = d.Domain_ID 
     where f.facilitystatus = 'A' and d.DomainName = 'cd.com'
where d.DomainName = 'cd.com' and d.EmailBlacklisted <> 'Y';

然后,如果没有返回任何内容,则表明被列入黑名单。您只需返回Y这样的名称:

select (case when d.EmailBlacklisted = 'Y' then 'Y' else f.facilityname end)
from facility f inner join
     domainfacility df
     on a.facility_ID = b.facility_facility_ID inner join
     domain d
     on df.domain_Domain_ID = d.Domain_ID 
     where f.facilitystatus = 'A' and d.DomainName = 'cd.com'
where d.DomainName = 'cd.com';

但这似乎是将名称与旗帜混合的奇怪混淆。

答案 1 :(得分:0)

试试这个:

SELECT IF(d.EmailBlacklisted = 'Y', 'Y', a.facilityname)
FROM domain d
LEFT OUTER JOIN domainfacility b ON b.domain_Domain_ID = d.Domain_ID 
LEFT OUTER JOIN facility a ON b.facility_facility_ID = a.facility_ID AND a.facilitystatus = 'A'
WHERE d.DomainName= 'cd.com';