我在查询数据时遇到麻烦。我不知道从哪里开始查询if else条件if if。
问题是: 如何查询 type = cpm 和 end_date< now()然后在之前将结果值类型更改为,如果 type = cpm 和 end_date> now()然后在之后将结果值类型更改为。 我在表中有数据,结果如下:
我想得到 结果如下:
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 :(得分: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