不确定你是否在MySQL表面上遇到这种奇怪的行为:当表字段默认为NULL
时,我做一个简单的UPDATE
语句运行没问题。如果我要发出field=field+1
,那么该值不会更新。然后我做的是将0
插入字段并再次运行相同的field=field+1
然后它就可以了。
UPDATE table1 SET field=field+1 WHERE id=123;
这是预期的行为吗?
p / s:field
类型为double
答案 0 :(得分:1)
如果您有一个空字段,那么可以使用更新。
//structure
UPDATE TableName SET column = IFNULL(column, 0) + 1 WHERE ...
//original
UPDATE table1 SET field = IFNULL(field, 0) + 1 WHERE id=123;
更多详情:function_ifnull
答案 1 :(得分:1)
这是因为
NULL+1 = NULL
所以你必须"欺骗"它为0。
UPDATE table1 SET field=COALESCE(field,0)+1 WHERE id=123;