使用多列的总和更新值

时间:2017-08-17 07:10:01

标签: mysql

我有一个表功能,我得到所有is_ *字段的SUM并将其存储在cnt列中。

id | is_yellow | is_green | is_blue | cnt
1  | 1         | 1        | null    | -> 2
2  | null      | 1        | null    | -> 1
3  | 1         | 1        | 1       | -> 3

查询给出"无效使用群组功能"回到更新:

UPDATE
  power
SET
cnt = (SUM(IFNULL(is_yellow, 0)) + 
  SUM(IFNULL(is_green, 0)) + 
  SUM(IFNULL(is_blue, 0)))

那里有什么问题?

1 个答案:

答案 0 :(得分:1)

您可以使用COALESCE

UPDATE
  power
SET
  cnt = COALESCE(is_yellow, 0) +
        COALESCE(is_green, 0) +
        COALESCE(is_blue, 0) 

如果该字段为空,则在添加中使用0