工作记录,查看了实施人员在生产库执行sql的一个问题。
根据描述是要将一个规定ID的相关业务字段进行更新,但是在执行后导致全表数据字段全部更新成0,以下是相关sql写法。
本来想要写的语句:
update table set a = 1 where b = 2;
错误写法:
update table set a = 1 and b = 2;
正确语句不做解释,现在解释一下错误写法。
首先可以确定此种写法的sql可以执行,虽然在这么多年的工作中从来不知道这件事情。
错误写法会导致table表中字段更新。以一下数据为例。
执行前
执行后
次数解释执行原因,实际上执行的是a=“1 and b=2”的逻辑语句。当b列值=2,根据逻辑与得到结果是true,所以赋值1,当b列值!=2,根据逻辑与得到结果false,所以赋值0。
仅供参考,疑难杂症。