COALESCE 解决 MySQL null求和问题

今天在操作数据库的时候,遇到了一个问题,我需要在一张数据表中新加一个字段,并且将这个字段的值,设为其他几个表中字段的和。
第一步:在表中加入sum字段
假设oa_staff_monthcostitem表有这些字段,我需要新加一个sum字段

ALTER TABLE `oa_staff_monthcostitem` add `sum` DECIMAL(25,4) NULL DEFAULT NULL COMMENT '合计' AFTER `hourlywage`;
第二步,将字段的值设为pay+company+welfare+bonus
执行这个sql
update `oa_staff_monthcostitem` set `sum`=`pay`+`company`+`welfare`+`bonus`;
显示受影响的有48条数据,可是我表中的数据远远大于48条,也就是说有很多是没有计算的。为什么
也就是说null和其他的值相加还是null值,因为我表中相加的数据有null值,所以相加之后还是null,就不会有变化,那要怎么解决呢?

就是用COALESCE
COALESCE 返回第一个不是null的数据
把原来的sql改一下:
update `oa_staff_monthcostitem` set `sum`=COALESCE(`pay`,0)+COALESCE(`company`,0)+COALESCE(`welfare`,0)+COALESCE(`bonus`,0);
这下受影响的有100多条,就可以了

猜你喜欢

转载自blog.csdn.net/ymk0375/article/details/80446317