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 `

我在一个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;

并显示“转义”更新查询的所有行<代码>日期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`))