MySQL 插入查询不适用于 WHERE 子句

新手上路,请多包涵

这个查询有什么问题:

 INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;

它可以在没有 WHERE 子句的情况下工作。我似乎忘记了我的 SQL。

原文由 Ronald 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 590
2 个回答

MySQL INSERT 语法 不支持 WHERE 子句,因此您的查询将失败。假设您的 id 列是唯一的或主键:

如果您尝试插入 ID 为 1 的新行,您应该使用:

 INSERT INTO Users(id, weight, desiredWeight) VALUES(1, 160, 145);

如果您尝试更改 ID 为 1 的现有行的权重/desiredWeight 值,您应该使用:

 UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;

如果您愿意,还可以使用 INSERT .. ON DUPLICATE KEY 语法,如下所示:

 INSERT INTO Users (id, weight, desiredWeight) VALUES(1, 160, 145) ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145

或者甚至像这样:

 INSERT INTO Users SET id=1, weight=160, desiredWeight=145 ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145

同样重要的是要注意,如果您的 id 列是自动增量列,那么您最好将它从 INSERT 中全部省略,让 mysql 正常增加它。

原文由 Chad Birch 发布,翻译遵循 CC BY-SA 3.0 许可协议

例如,我正在插入一个我知道从临时表 tmp_city 具有 id 54 的州的城市

下面的代码可以正常工作 -

 insert into tb_cities (state_id, city_nm) (select '54' , t.city_name from tmp_city t)

原文由 Pradyut Bhattacharya 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题