我目前正在运行一个查询,看起来像这样:
SELECT campaigns.id, lead_stats.camp_id, lead_stats.country, campaigns.name, SUM(lead_stats.leads) AS lead, SUM(lead_stats.clicks) AS click,TRUNCATE(100.0 * SUM(lead_stats.leads) / SUM(lead_stats.clicks), 1) AS conv_rate
FROM lead_stats
JOIN campaigns
ON campaigns.id = lead_stats.camp_id
WHERE lead_stats.date > DATE_SUB(NOW(), INTERVAL 24 HOUR)
AND lead_stats.from_product = 4
AND lead_stats.camp_id NOT IN (
SELECT camp_id
FROM suspicious_offer_clears
WHERE clear_until > '".date('Y-m-d H:i:s')."'
AND alert_type = 3
)
GROUP BY lead_stats.camp_id
HAVING (SUM(lead_stats.leads) / SUM(lead_stats.clicks)) < 0.1
ORDER BY lead_stats.camp_id
它得到了一些对我的问题并不重要的信息。但是,我很好奇如何在这个SQL语句中对lead_stats.country执行if语句。我想看看国家是否不等于"US",如果它不等于"US",我想看看该行的SUM(lead_stats.click)是否大于20。我决定尝试在我的php模板中这样做,因为我不知道如何在MySQL上做。
这是我在模板上的内容
<?php
while ( $row = mysql_fetch_assoc($getConresult) ) {
if($row['country'] != "US"){
if($row['click'] > 19){
//not sure what to do here because it is less than 20, so I do not want to include this in my output on the table
}
}
所以我想知道我怎么能跳过一个记录,如果它不符合我上面所述的标准。我想我可以使用for声明,但在这方面有些混乱。任何帮助将不胜感激!
因为它是一个while
循环,你应该跳过这个迭代
while ( $row = mysql_fetch_assoc($getConresult) ) {
if($row['country'] != "US"){
if($row['click'] < 20){
continue; //skip to the next loop
}
}
如果需要停止循环,使用break而不是continue