mysql中的case表达式未计算

0mkxixxg  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(395)

我在一个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 进行评估。你能给个建议吗?

xxls0lw8

xxls0lw81#

这不会达到您的期望:

AND `T1A` BETWEEN (`Date`-1 AND (`DateP1` OR `DateP2`))

我猜你想要这个:

AND `T1A` BETWEEN (`Date`-1 AND COALESCE(`DateP1` `DateP2`))

相关问题