以下SQL
UPDATE line_items SET `line_items.quantity` = 2 where line_items.id = 1234;
给了我这个错误:
ERROR 1054 (42S22): Unknown column 'line_items.quantity' in 'field list'
但是,这些查询都按预期工作:
UPDATE line_items SET line_items.quantity = 2 where line_items.id = 1234;
UPDATE line_items SET `quantity` = 2 where line_items.id = 1234;
UPDATE line_items SET quantity = 2 where line_items.id = 1234;
为什么反引号在这种特定情况下不起作用?
我当前的MySQL版本是Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
我上周安装的。我还没试过其他版本。
我问的原因是我有一个更复杂的UPDATE + JOIN查询,Ruby on Rails正在生成哪个不起作用,因为Rails添加了反引号。我试图弄清楚谁是错的:Rails,MySQL或我: - )
答案 0 :(得分:4)
不要在表名和列名之间包含句点分隔符。执行此操作时,它会将整个事物视为列名。
你想要这个:
`line_items`.`quantity`
不是
`line_items.quantity`
最终查询应如下所示:
UPDATE line_items SET `line_items`.`quantity` = 2 where line_items.id = 1234;