UPDATE语句在使用AND而不是COMMA时不会生成语法错误

Wal*_*ter 3 mysql sql sql-update

我正在浏览关于更新的MySQL文档.请参阅UPDATE语法.我发现语法是

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
Run Code Online (Sandbox Code Playgroud)

当我执行此声明时

UPDATE SampleTB
SET NAME = '123' AND Address = '456'
WHERE ID = 1;
Run Code Online (Sandbox Code Playgroud)

请参阅此处获取SQL Fiddle Demonstration Link

成功执行查询和价值Name0.我期待查询语法错误.

有人可以向我解释为什么它没有产生错误?为什么列的新值是zero和不是123

zer*_*kms 10

SET NAME = '123' AND Address = '456'
Run Code Online (Sandbox Code Playgroud)

解析为:

SET NAME = ('123' AND (Address = '456'))
Run Code Online (Sandbox Code Playgroud)

这是AND字符串和布尔操作数的一个比较和布尔值.

因此,需要当前行的Address列值,将它与一个'456'字符串和所述比较的结果被用作用于第二操作数AND'123' AND false