MySQL中UPDATE语句里SET后使用AND的执行过程和结果分析

使用SQL中的UPDATE关键字更新多个字段值时,SET后面的更新字段应该使用逗号而不能用AND。虽然用AND不会报错,但会使更新结果错误,下面我将通过场景来分析当我们使用AND时SQL的执行过程和为什么更新结果只会是0/1/NULL;

场景示例

以下是场景更新前的原始查询数据如下:

MySQL中UPDATE语句里SET后使用AND的执行过程和结果分析

更新场景1

MySQL中UPDATE语句里SET后使用AND的执行过程和结果分析

更新场景2

MySQL中UPDATE语句里SET后使用AND的执行过程和结果分析

更新场景3

MySQL中UPDATE语句里SET后使用AND的执行过程和结果分析

 更新场景4

MySQL中UPDATE语句里SET后使用AND的执行过程和结果分析

 更新场景5

MySQL中UPDATE语句里SET后使用AND的执行过程和结果分析

更新场景6

MySQL中UPDATE语句里SET后使用AND的执行过程和结果分析

 问题发现

为什么结果都为0或者为1或者为Null呢?是不是有什么规律?

总结分析

 涉及到两个知识点

(1)当我们SET后使用AND而不是逗号时,第一个“=”前的字段的取值取自“=”后的逻辑运算的结果。我们拿场景1为例子:

 MySQL中UPDATE语句里SET后使用AND的执行过程和结果分析

(2)SQL中的空值(NULL)

SQL 中的空值( NULL )是一个特殊的值,代表了缺失/未知的数据或者不适用的情况。对于大多数的编程语言而言,逻辑运算的结果只有两种情况:真( Ture )或者假( False )。但是对于 SQL 而言,逻辑运算结果存在三种情况:真、假或者未知( Unknown )。对于 SQL 查询中的 WHERE 条件,只有结果为真的数据才会返回,结果为假或者未知都不会返回。因此, SQL 中的逻辑运算符 AND 、 OR 以及 NOT 的结果也存在三种情况。

AND 操作符的逻辑真值表如下:

MySQL中UPDATE语句里SET后使用AND的执行过程和结果分析

 其余的逻辑运算与null的结果请自行查阅相关文章。

希望本文章对您有帮助,您的转发、点赞是我的创作动力,十分感谢。

扫描下方二维码关注微信公众号,您会收到更多优质文章推送。

MySQL中UPDATE语句里SET后使用AND的执行过程和结果分析

MySQL中UPDATE语句里SET后使用AND的执行过程和结果分析

上一篇:MySQL 为 Null 会导致 5 个致命问题


下一篇:《Java 底层原理》HSDB工具的使用说明