为什么这个MySQL查询会导致错误?

时间:2013-05-31 21:45:22

标签: mysql

查询:

INSERT INTO `metadata` (`group_id`, `key`, `value`) 
VALUES ("19", "originality", "2") 
ON DUPLICATE KEY UPDATE (`group_id` = `19`, `key`=`originality`, `value`=`2`)

表格:

group_id | key | value
----------------------------------------

group_idkey都有UNIQUE索引。

当我尝试运行查询时,如果一个行已经存在且id为19,则会发生错误。我希望查询运行的方式是,如果没有带有该ID的行,请插入它并且如果有更新它而不是插入新行。

我得到的错误消息是典型的:

enter image description here

4 个答案:

答案 0 :(得分:3)

我不确定(是否应遵循UPDATE关键字 - 我认为不是。所以试试

ON DUPLICATE KEY UPDATE `group_id` = 19, `key`='originality', `value`=2

(或将group_id替换为submission_group_id - 您的错误消息似乎与原始查询不匹配)

答案 1 :(得分:1)

你只能在表列和表名上使用`,而不能用于数据。 数据应使用'或'

像:

ON DUPLICATE KEY UPDATE `group_id` = 19, `key`="originality", `value`=2

答案 2 :(得分:0)

引号标记必须是'字符而不是'字符。

答案 3 :(得分:0)

  

如果没有带有该id的行,请插入它,如果有更新它而不是插入新行。

如果你想这样做,你应该尝试如下声明:

IF EXISTS (SELECT * FROM sometable WHERE ColumnName='somevalue')
    UPDATE sometable SET (...) WHERE ColumnName='somevalue'
ELSE
    INSERT INTO Table1 VALUES (...)