1

询问:

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_id并且key都有一个UNIQUE索引。

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

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

在此处输入图像描述

4

4 回答 4

2

我不确定 a(是否应该跟随UPDATE关键字 - 我认为不是。所以试试

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

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

于 2013-05-31T21:55:42.870 回答
1

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

喜欢:

ON DUPLICATE KEY UPDATE `group_id` = 19, `key`="originality", `value`=2
于 2013-05-31T21:49:24.090 回答
0

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

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

IF EXISTS (SELECT * FROM sometable WHERE ColumnName='somevalue')
    UPDATE sometable SET (...) WHERE ColumnName='somevalue'
ELSE
    INSERT INTO Table1 VALUES (...)
于 2013-05-31T21:56:45.397 回答
0

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

于 2013-05-31T21:48:05.007 回答