使用mysql_fetch_assoc时如何跳过一行?

时间:2015-07-07 19:29:57

标签: php mysql

我目前正在运行如下所示的查询:

    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语句。我想知道这个国家是否不等于&#34; US&#34;,如果它不等于&#34; US&#34;我想看看该行的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语句,但在这方面有一些混乱。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

因为它是一个while循环,所以你应该跳过那个迭代

while ( $row = mysql_fetch_assoc($getConresult) ) {
  if($row['country'] != "US"){
    if($row['click'] < 20){
     continue; //skip to the next loop
  }
}

如果您需要停止循环,请使用break代替continue