在where子句中使用if语句

Flø*_*tti 2 mysql if-statement where-clause

如果在where语句中我试图获取datetime大于NOW()的所有行,但是如果type ='economy',我想限制它只显示datetime和NOW()之间的datediff是否更大超过14天.

就像是:

Select type,date(datetime) as date
from tbl1
where datetime > NOW()
IF(type = 'economy') && datediff(datetime,NOW()) > 14
order by datetime desc
Run Code Online (Sandbox Code Playgroud)

我也曾尝试过案例,但无法弄清楚......

Jay*_*ymz 10

您可以将标准分为两种不同的比较:

select type,date(datetime) as date 
from tbl1 
where (datetime > NOW() AND type <> 'economy') OR
      (datediff(datetime, NOW()) > 14 AND type = 'economy')
order by datetime desc
Run Code Online (Sandbox Code Playgroud)

(没有检查语法错误,但这个想法应该是正确的...)