SQL 中的撇号选择整个 table

Apostrophes in SQL selecting the whole table

我公司的代码中有一个来自 SQL 句子的奇怪错误,它基本上是更新 table 中的所有行,而我们只想更新一个行。代码如下。

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

列名周围的撇号明显错误。所以这是在更新 table 中的所有行;我们删除了它们,句子按预期工作。那是怎么回事?

谢谢!

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

我猜是 MySQL 所以如果你想引用一个字段名你应该使用 `` 而不是 ''。