我有一个名为users的MySQL表包含所有用户的简单计数。
<表类>
user_id
counter1
counter2
tbody><<tr>1 0 5 21 6 3 2 7 43 8 表类>
问题是,当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)