我在一个mysql查询中有一个case表达式,它检查两个日期中的较短日期或较早日期,但是我在让它正常工作时遇到了问题
update SaveContactForm7_1
SET `TStat` =
CASE
WHEN
(`DateP1` IS NOT NULL OR `DateP2` IS NOT NULL)
AND `T1A` BETWEEN (`Date`-1 AND (`DateP1` OR `DateP2`))
AND `T1A` < `SLH`
AND `T2A` IS NULL
AND `T3A` IS NULL
THEN 'T1'
WHEN
(`DateP1` IS NOT NULL OR `DateP2` IS NOT NULL)
AND `T2A` BETWEEN (`Date`-1 AND (`DateP1` OR `DateP2`))
AND `T2A` < `SLH`
AND `T3A` IS NULL
THEN 'T2'
END;
它总是计算为t1或t2或跳过 T1A
< SLH
总体评价。我试过戴牙套( T1A
< SLH
)但这也不管用。
select * from SaveContactForm7_1 where `T1A`>`SLH` and TStat='T1';
它显示了“转义”更新查询的所有行。 DateP1
, DateP2
, Date
, T1A
, T2A
... 都是日期类型。如何编写更新查询以便 T1A
< SLH
进行评估。你能给个建议吗?
1条答案
按热度按时间xxls0lw81#
这不会达到您的期望:
我猜你想要这个: