2015-09-28 78 views
0

之間的比較值,我已搜查了個遍,但仍然不能寫實際工作正確的查詢! :|做查詢的另一個查詢,如果另一個查詢不存在返回0和2的查詢

我寫這篇文章之一,它似乎確定,但它是這麼想的工作......

select 
    s.surf_id, 
    s.surf_dailyuser, 
    s.surf_url, 
    s.surf_cpc, 
    (if exists(
    select surfed_count from `surfed` where s.surf_id = surfed_site and surfed_date = 'today' 
) then select surfed_count as surfedcount; 
    else select 0 as surfedcount; end if 
) 
    from `surfs` s where s.surf_status = 1 and surfedcount < s.surf_dailyuser order by s.surf_rand limit 1 

任何建議將是一個很大的幫助:)

表都是這樣

次區域資源中心

CREATE TABLE IF NOT EXISTS `surfs` (
    `surf_id` int(11) NOT NULL, 
    `surf_user` int(11) NOT NULL, 
    `surf_title` varchar(128) CHARACTER SET latin1 NOT NULL, 
    `surf_url` varchar(500) CHARACTER SET latin1 NOT NULL, 
    `surf_dailyuser` int(11) NOT NULL, 
    `surf_cpc` int(11) NOT NULL, 
    `surf_status` int(11) NOT NULL, 
    `surf_date` varchar(32) NOT NULL, 
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 

衝浪

CREATE TABLE IF NOT EXISTS `surfed` (
    `surfed_id` int(11) NOT NULL, 
    `surfed_code` int(11) NOT NULL, 
    `surfed_user` int(11) NOT NULL, 
    `surfed_site` int(11) NOT NULL, 
    `surfed_count` int(11) NOT NULL, 
    `surfed_date` int(11) NOT NULL 
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; 

回答

0

您可以使用CASE語句如下

select 
    s.surf_id, 
    s.surf_dailyuser, 
    s.surf_url, 
    s.surf_cpc, 
    CASE WHEN 
    (select surfed_count from `surfed` where s.surf_id = surfed_site and surfed_date = 'today') = 1 then (select surfed_count as surfedcount) 

    ELSE 0 END AS surfedcount 
    from `surfs` s where s.surf_status = 1 and surfedcount < s.surf_dailyuser order by s.surf_rand limit 1 
+0

感謝了很多回應,但我面對這個錯誤:「參考‘surfedcount’不支持(在項目列表中向前引用)」 ...當我改變這部分「...然後(選擇surfed_count as surfedcount)...」到「...然後(選擇surfed_count)...」,我面對這個錯誤:「未知列'surfed_count'在'字段列表'...',但surfed_count clumn exsists!我甚至嘗試使用THEN後重新選擇surfed_count,但它不工作太... – wearyminded

+0

請給你的SQL。 – Tharanga

+0

我編輯問題並添加表格結構:) – wearyminded