我有
UPDATE topic SET liked = liked - 1 WHERE id='$id'
liked
为0
时,它不会减少。
当liked
为liked
时,我需要做些什么才能减少字段0
?
注意:它不是0时有效。
编辑:liked
是int。
答案 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)