3

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

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

当我执行这个语句

UPDATE SampleTB
SET NAME = '123' AND Address = '456'
WHERE ID = 1;

请参阅此处获取 SQL Fiddle 演示链接

Name查询成功执行,值为0。我期待查询出现语法错误。

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

4

1 回答 1

10
SET NAME = '123' AND Address = '456'

被解析为:

SET NAME = ('123' AND (Address = '456'))

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

所以它获取当前行的Address列值,将其与字符串进行比较,比较'456'结果用作第二个操作数AND'123' AND false

于 2012-12-30T11:45:09.863 回答