MySQL中的CASE表达式未计算
我在一个MySQL查询中有一个CASE表达式,用于检查两个日期中的较短日期或较早日期,但是我在使其正常工作时遇到了问题MySQL中的CASE表达式未计算,mysql,case,Mysql,Case,我在一个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 `
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;
并显示“转义”更新查询的所有行<代码>日期P1,
日期P2
,日期
,T1A
,T2A
。。。都是日期类型。如何编写更新查询以便计算T1A
<SLH
。你能告诉我吗?这不会达到你的预期:
AND `T1A` BETWEEN (`Date`-1 AND (`DateP1` OR `DateP2`))
我猜你想要这个:
AND `T1A` BETWEEN (`Date`-1 AND COALESCE(`DateP1` `DateP2`))
给出一个(在您看来)应评估为T1或T2的行的示例“…检查两个日期中的较小日期或较早日期”。我知道问题是由于我编写所有嵌套的方式造成的,而不是由于实际查询没有计算到T1或T2。为什么要投否决票?请重新考虑取消否决票。谢谢GMB。使用您的解决方案,我能够得到预期的结果。
AND `T1A` BETWEEN (`Date`-1 AND COALESCE(`DateP1` `DateP2`))