查询:
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的行,请插入它并且如果有更新它而不是插入新行。
我得到的错误消息是典型的:
答案 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 (...)