当它为0时,MySQL不会递减

时间:2011-12-27 14:27:33

标签: php mysql

我有

UPDATE topic SET liked = liked - 1 WHERE id='$id'

liked0时,它不会减少。

likedliked时,我需要做些什么才能减少字段0

注意:它不是0时有效。

编辑:liked是int。

3 个答案:

答案 0 :(得分:4)

你想要一个零的底线吗?

UPDATE topic SET liked = liked - 1 WHERE id='$id' AND liked > 0;

如果你想要负数,你当然需要SIGNED datatype。但是,您需要了解限制以避免错误。见"Out-of-Range and Overflow Handling"

因此,假设已更改为SIGNED TINYINT ...

UPDATE topic SET liked = liked - 1 WHERE id='$id' AND liked > -128;

答案 1 :(得分:2)

需要将liked列设置为SIGNED。

例如。

ALTER TABLE `tbl` CHANGE `liked` `liked` INT(10) SIGNED

答案 2 :(得分:1)

如果你使用UNSIGNED整数,它不能低于0但是如果我对你 - 你可以在它低于0时减少值?如果是这样,你试过引用这些值吗?也许这就是MySQL等于0到NULL的问题?试试这样:

`liked` = (`liked` - 1)