如果计算值在 CASE 中为 <0,如何分配 0



我有一个名为users的MySQL表包含所有用户的简单计数。

<表类> user_id counter1 counter2 tbody><<tr>105216327438

问题是,当counter1小于2时,表达式counter1 - 2产生负值。但是由于它被声明为UNSIGNED,因此使用它的表达式的结果也是无符号的,因此不允许使用负值。

而不是从中减去,使用IF()表达式来防止计算这些无效的值。

CASE user_id
WHEN 2 THEN IF(counter1 > 2, counter1 - 2, 0)
WHEN 3 THEN IF(counter1 > 5, counter1 - 5, 0)
ELSE counter1
END

最简单的方法是:

GREATEST(0, CASE ... END)

最新更新