使用SQL中的UPDATE关键字更新多个字段值时,SET后面的更新字段应该使用逗号而不能用AND。虽然用AND不会报错,但会使更新结果错误,下面我将通过场景来分析当我们使用AND时SQL的执行过程和为什么更新结果只会是0/1/NULL;
场景示例
以下是场景更新前的原始查询数据如下:
更新场景1
更新场景2
更新场景3
更新场景4
更新场景5
更新场景6
问题发现
为什么结果都为0或者为1或者为Null呢?是不是有什么规律?
总结分析
涉及到两个知识点
(1)当我们SET后使用AND而不是逗号时,第一个“=”前的字段的取值取自“=”后的逻辑运算的结果。我们拿场景1为例子:
(2)SQL中的空值(NULL)
SQL 中的空值( NULL )是一个特殊的值,代表了缺失/未知的数据或者不适用的情况。对于大多数的编程语言而言,逻辑运算的结果只有两种情况:真( Ture )或者假( False )。但是对于 SQL 而言,逻辑运算结果存在三种情况:真、假或者未知( Unknown )。对于 SQL 查询中的 WHERE 条件,只有结果为真的数据才会返回,结果为假或者未知都不会返回。因此, SQL 中的逻辑运算符 AND 、 OR 以及 NOT 的结果也存在三种情况。
AND 操作符的逻辑真值表如下:
其余的逻辑运算与null的结果请自行查阅相关文章。
希望本文章对您有帮助,您的转发、点赞是我的创作动力,十分感谢。
扫描下方二维码关注微信公众号,您会收到更多优质文章推送。