【发布时间】:2016-12-12 14:55:17
【问题描述】:
我有 MySQL 表,我需要查询 INSERT ON DUPLICATE UPDATE。 “id”是主键,我现在不需要它。
我需要在表中插入值“id2”、“name”、“city”。如果“id2”和“name”中有相同值的行,则只需更新“city”。 请问我哪里错了?
$query = "INSERT INTO
`table`
(id2, name, city)
VALUES
( '$new_id2', '$new_name', '$new_city')
ON DUPLICATE KEY UPDATE
city='$new_city'
WHERE
`id2`='$new_id2' AND `name`='$new_name'
";
【问题讨论】:
-
你得到什么错误信息?
-
您的语法不正确。
INSERT语句永远不会有WHERE子句。它应该在ON DUPLICATE KEY UPDATE之后结束 -
你说
If there is some row with the same values in "id2" and "name"但你只有id2作为主键。name是否也打算成为一个独特的值? -
哦,对不起,我误解了你有一个自动增量
id与id2分开。您将需要其他列的唯一索引。我可以在下面发布答案。 -
如果您无法更改键来创建新索引,则无法使用
ON DUPLICATE KEY UPDATE。请注意,创建新索引不需要您删除现有的主键id。你没有能力跑ALTER TABLE吗?
标签: mysql insert on-duplicate-key