今天在操作数据库的时候,遇到了一个问题,我需要在一张数据表中新加一个字段,并且将这个字段的值,设为其他几个表中字段的和。第一步:在表中加入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执行这个sqlupdate `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多条,就可以了