代码之家  ›  专栏  ›  技术社区  ›  azoundria

MySQL-在一个Set查询中有一个AND Before WHERE意味着什么?

  •  0
  • azoundria  · 技术社区  · 6 年前

    最近,我发现我大约一年前修改过的一个查询正在悄悄地失败(根本什么也不做)。

    我把这个问题归咎于一个语法错误。而不是用逗号来设置多个字段,我会错误地输入和。因此,它没有按预期设置第二个字段,而是根本没有设置字段。

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

    像这样修改它显然是完全有效的语法:

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

    我知道我应该使用逗号(甚至在那时也这样做了),我甚至应该测试像这样的一个小的更改(超出标准的错误处理),现在我为这个错误付出了巨大的代价。但是,我仍然很想知道为什么查询是有效的,以及它实际上在做什么。

    根据 MySQL documentation ,它希望在该位置有一个逗号分隔的分配列表。

    我输入的查询实际上是做什么的?为什么在MySQL语法中允许它而不引发任何错误?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Turo    6 年前

    也是一个逻辑运算符( Mysql Ref ),所以你的语法应该是:

    分配(2和 time_confirm