SQL中的撇号选择整个表

时间:2017-01-26 11:45:32

标签: sql apostrophe

我的公司代码中有一个来自SQL语句的奇怪的错误,基本上更新表中的所有行,当我们想要的只是更新单个行时。代码如下。

UPDATE table SET 'disconnections'=value WHERE 'connections'=(SELECT MAX('connections') FROM table)

其中撇号围绕列名称显然是错误的。所以这是更新表中的所有行;我们删除了它们,句子按预期工作。与此有什么关系?

谢谢!

1 个答案:

答案 0 :(得分:3)

问题出在MAX('connections')。显然你想使用``而不是单一的配额''。在您的情况下,'connections'是字符串常量而不是字段名称。所以MAX(constant) = constant。对于表中的所有记录,此条件为TRUE,因为它不依赖于名为“connections”的字段。

我想这是MySQL所以如果你想引用字段名称,你应该使用``而不是''。