Mysql:如何用if else条件查询if

时间:2013-08-26 04:06:23

标签: mysql

我在查询数据时遇到麻烦。我不知道从哪里开始查询if else条件if if。

问题是: 如何查询 type = cpm end_date< now()然后在之前将结果值类型更改为,如果 type = cpm end_date> now()然后在之后将结果值类型更改为。 我在表中有数据,结果如下:

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
        )
)

提前致谢。

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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`

答案 2 :(得分:2)

你可以使用WHEN .. CASE。

以下是您的解决方案的链接SQLfiddle