UPDATE `testppp`.`datatbl`` SET `phasea` = (CASE `phasea` 
WHEN NULL THEN '5'
    END)
WHERE (`type`='2' AND `typeid`='6627');
第一个问题
如果 phasea 字段是 Null,就把它设置为 5,WHERE 是匹配条件
测试结果是:   
Query OK, 0 rows affected (0.01 sec)
Rows matched: 1  Changed: 0  Warnings: 0
有匹配,没发生改动,确定 phasea 是 Null 的。。。
第二个进阶问题是:
在此基础上,如果有发生了 SET 值这个事情,就把 UpdateTime 设置为 now()
如果没有 UPDATE,什么都不变动。。。
|  |      1weizhen199      2021-03-04 10:27:52 +08:00  1 为啥要这么写。 ....set phasea =5 where phasea is null 啊 | 
|      2qazwsxkevin OP @weizhen199 因为还会有其它字段的判断加入进来,在一条语句里面完成的呀,不只是这个字段的判断,我是试着写了一个测试先,反复看了几次语句的教学,也折腾不出来。。。。 | 
|  |      3eason1874      2021-03-04 10:32:20 +08:00  1 可以用 IFNULL  UPDATE `testppp`.`datatbl`` SET `phasea` = IFNULL(`phasea`, '5') WHERE `type`='2' AND `typeid`='6627'; 最好还是可以按条件选出来直接修改 UPDATE `testppp`.`datatbl`` SET `phasea` = '5' WHERE `type`='2' AND `typeid`='6627' AND `phasea` IS NULL; | 
|  |      4killergun      2021-03-04 10:43:13 +08:00  1 第二个进阶问题: DateTime 可以设置 ON UPDATE CURRENT_TIMESTAMP 默认值行为 | 
|      5qazwsxkevin OP 谢谢各位,如果是 IFNULL 或者 WHERE 判断对单个值判断,一行数据(多个值)的判断,也许就要组装 10 几条语句去完成,还是想学习一下 CASE WHEN 的方式,一行语句完成,因为组装好的语句,是通过队列去操作 MYSQL 的,所以一行语句比较符合预期。。。 | 
|      6smilenceX      2021-03-04 10:48:23 +08:00 第一个问题: 你可以用 case when phasea is null then 这种写法 你那个写法的值不能是 null,具体可以查 mysql 官方文档,我不能贴链接,会被 v 站要求验证手机号。 第二个问题可以考虑用 trigger 。 |