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 所以如果你想引用一个字段名你应该使用 `` 而不是 ''。
我公司的代码中有一个来自 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 所以如果你想引用一个字段名你应该使用 `` 而不是 ''。