我有一个非常大的表,其中有两个INT列,默认为null。这是一个问题,因为它们是INT字段,如果它们最初设置为0,在许多情况下会有所帮助。
所以我的问题是,有没有一种方法可以更新和增加(+1)这些字段,而它们是这样的(默认值为null)? BTW ..到目前为止我没有运气,似乎增量仅在默认值= 0
时有效..或者是我唯一的选择,可以将默认值设置为空
答案 0 :(得分:36)
UPDATE TableName SET column = IFNULL(column, 0) + 1 WHERE ...
More info on IFNULL
。如果它不是NULL
,则返回第一个参数,否则返回第二个参数。
答案 1 :(得分:2)
尝试将字段设置为NOT NULL
以避免问题,以便使用默认值0而不是null。另一种选择是在列为空时将列设置为零。
UPDATE TableName SET FieldName = '0' WHERE FieldName IS NULL
其他替代方法是发出IFNULL以在列为空并且然后递增列时返回0。
UPDATE TableName SET FieldName = IFNULL(FieldName,0)
答案 2 :(得分:0)
SQL标准是使用COALESCE()
;自3.23版本(2001年发布)以来,MySQL已经可以使用它了:
UPDATE mytable
SET mycolumn = COALESCE(mycolumn, 0) + 1
WHERE my_other_columns = ...
我看不出有任何理由在此IFNULL()
选择COALESCE()
。
希望这有帮助。