mysql-在set查询的where之前有and是什么意思?

kx1ctssn  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(378)

最近,我发现一年前修改过的一个查询悄悄地失败了(什么也没做)。
我把问题归咎于语法错误。而不是用逗号来设置多个字段,我错放了。因此,它没有按预期设置第二个字段,而是完全没有设置字段。
我最初的问题是这样的:

UPDATE `report` SET `confirm` = 2 WHERE `id` = 999

这样修改显然是非常有效的语法:

UPDATE `report` SET `confirm` = 2 AND `time_confirm` = UNIX_TIMESTAMP() WHERE `id` = 999

我知道我应该使用逗号(即使在那时也应该),我应该测试像这样的一个小的简单更改(超出了标准错误处理),现在我已经为这个错误付出了高昂的代价。然而,我仍然很好奇为什么这个查询是有效的,以及它实际上在做什么。
根据mysql文档,它期望在该位置有一个逗号分隔的分配列表。
我输入的查询实际上是做什么的?为什么在mysql语法中允许它而不抛出任何类型的错误?

rdrgkggo

rdrgkggo1#

并且也是一个逻辑运算符(mysql ref),因此您可以使用以下语法:
分配(2和 time_confirm =unix\u timestamp())进行确认

相关问题