1.薪水表,如下所示,要求:为下一年调整工资22000以下的员工涨工资10%,24000以上的员工减少10%
思考:如果先update薪水24000以上的员工,假设某工资为24000,24000*(1-10%)=21600;然后调整22000以下工资员工的时候,这位员工工资会被再一次被修改。不符合预期政策。同样若先更新22000以下员工同样会出现工资更新后超过24000,被重复更新的两次的情况,比如21900*1.1=24090。
结论:必须所有数据一次更新
sql:
update salary SET SALARY =
case when SALARY > 2400 then SALARY*0.9
when SALARY < 2200 then SALARY*1.1 else SALARY end
注意: else SALARY end必须写,不然2200—2400区间的员工工资会被更新为null。
case子句没有明确指定else会被默认处理成else null
先到这里,困死~