这个小查询出了什么问题? SQL错误

时间:2016-06-16 21:55:10

标签: mysql sql

我有这个查询:

INSERT INTO abilities_usage (id, name, usage) 
      VALUES 
("5467", "naga_siren_mirror_image", "1") 
ON DUPLICATE KEY UPDATE id='5467';

SQL响应:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   '使用率'附近的值(“5467”,“naga_siren_mirror_image”,“1”)ON   我在第1行重复更新密钥更新

为什么?

2 个答案:

答案 0 :(得分:3)

您必须使用单个引号来表示字符串文字:

INSERT INTO abilities_usage (id, name, usage) VALUES
('5467', 'naga_siren_mirror_image', '1') ON DUPLICATE KEY UPDATE id='5467';

答案 1 :(得分:1)

如果密钥存在,分配给密钥是没有意义的...我想你想要的是:

INSERT INTO abilities_usage (id, name, `usage`) 
VALUES ('5467', 'naga_siren_mirror_image', '1') 
ON DUPLICATE KEY UPDATE name = 'naga_siren_mirror_image', `usage` = '1';

假设id当然是主键。 (如果它是一个正确的数字类型,根本不要使用单引号。)

此外,usage是MySQL中的reserved keyword,您需要将其包含在后面的标记中。