2013-08-26 56 views
2

我遇到麻煩查詢我的數據。我不知道從哪裏開始查詢if if else if裏面。Mysql:如何查詢與if else條件如果

問題是: 如何查詢如果類型= CPMEND_DATE <現在()然後之前更改結果值類型,並且如果其類型= CPMEND_DATE>現在( )然後在之後將結果值類型更改爲。 我在表中的數據,結果如下:

enter image description here

而且我希望得到如下結果 :

Array(
    [0] => Array 
     (
      [id] => 1 
      [type] => free 
      [end_date] => 2013-06-20 
     ) 
    [1] => Array 
     (
      [id] => 4 
      [type] => after 
      [end_date] => 2013-08-29 
     ) 
    [2] => Array 
     (
      [id] => 5 
      [type] => before 
      [end_date] => 2013-06-20 
     ) 
) 

在此先感謝。

+0

看看date()函數,並比較 –

+0

嗨@FaceOfJock,是的,我知道,如果使用PHP的if else,但我想在MySQL查詢使用它。提前致謝。 –

+0

好的,對不起,我給你使用了php –

回答

7

像這樣的東西應該工作:

select 
    id, 
    case 
    when (type = 'cpm' and end_date < now()) then 'before' 
    when (type = 'cpm' and end_date > now()) then 'after' 
    else type 
    end as type, 
    end_date 
from my_table; 
+0

嗨Vinodadhikary先生,謝謝你的幫助,現在工作,謝謝先生。 –

2

你可以使用MySQL CASE - http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#operator_case

CASE 
WHEN `type` = 'cpm' AND `end_date` < NOW() THEN 'before' 
WHEN `type` = 'cpm' AND `end_date` > NOW() THEN 'after' 
ELSE `type` 
END as `type` 
+0

我想你可能已經添加了一個額外的'CASE'......只是說。 – jerdiggity

+0

@jerdiggity不符合文檔 - http://dev.mysql.com/doc/refman/5.0/en/case.html - > CASE語句...以END CASE而不是END結尾 – Sean

+0

@ jerdiggity你是正確的,我正在查看錯誤的文檔,存儲過程的文檔,而不是表達式。 http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#operator_case – Sean

2

可以當.. CASE這一點。在PHP

這裏是鏈接,您的解決方案SQLfiddle

+0

Hi @ ankit337,謝謝你的幫助... –