MySQL重复密钥更新

时间:2009-05-15 06:01:33

标签: mysql duplicates

如果我有这样的查询,我怎么能引用我在update语句中给出的值,这样我就不需要再次插入相同的数据了?示例我想用'xxx'更新col1值,但现在我需要在重复语句中再次输入'xxx'。反正有没有在重复声明中引用这些值?

INSERT INTO TABLENAME(col1, col2) 
VALUES (’xxx’, ‘yyy’) 
ON DUPLICATE KEY UPDATE col1 = ‘zzz’

2 个答案:

答案 0 :(得分:33)

这应该有效并且更优雅:

INSERT INTO TABLENAME(col1, col2) 
VALUES (’xxx’, ‘yyy’) 
ON DUPLICATE KEY UPDATE col1 = VALUES(col1)

请注意,您无需更新行的主键部分。我们知道这是相同的,因为发生了碰撞。

答案 1 :(得分:3)

在PHP中我这样做是为了解决这个问题:

$fields = "a = 1, b = 2, c = 3";
$sql = "INSERT INTO some_table SET id = $id, $fields ON DUPLICATE KEY UPDATE $fields";
mysql_query($sql);
相关问题