我的公司代码中有一个来自SQL语句的奇怪的错误,基本上更新表中的所有行,当我们想要的只是更新单个行时。代码如下。
UPDATE table SET 'disconnections'=value WHERE 'connections'=(SELECT MAX('connections') FROM table)
其中撇号围绕列名称显然是错误的。所以这是更新表中的所有行;我们删除了它们,句子按预期工作。与此有什么关系?
谢谢!
答案 0 :(得分:3)
问题出在MAX('connections')
。显然你想使用``而不是单一的配额''
。在您的情况下,'connections'
是字符串常量而不是字段名称。所以MAX(constant) = constant
。对于表中的所有记录,此条件为TRUE,因为它不依赖于名为“connections”的字段。
我想这是MySQL所以如果你想引用字段名称,你应该使用``而不是''。