在MySQL中以任何方式进行“适当插入或更新”?

时间:2011-08-04 15:57:28

标签: mysql

我希望能够在一次调用中插入/更新表的多行,但是我推入数据库的数据可能是新的,也可能不是。基本上我有一个表格列a,b,c。 a,b是独一无二的。

因此,如果现有表格如下:

a|b|c
-----
1|1|1
1|2|3

我想做类似

的事情
INSERT INTO tbl (a,b,c) VALUES (1,1,2), (2,3,4), (5,6,7);

我希望像

这样的东西
INSERT INTO tbl (a,b,c) VALUES (1,1,2), (2,3,4), (5,6,7) ON DUPLICATE KEY UPDATE c=c;

可以工作,但只使用数据库中当前的'c'。有没有办法告诉它使用c的新值,或其他一些方法来实现相同的东西?这个例子使用了3组值,但我的实际值将使用20-30,这就是为什么我不想在可能的情况下进行循环。

我知道如何通过循环遍历所有值来实现它,所以只有在单个或少于n + 1个左右的查询中才可能需要指导。

1 个答案:

答案 0 :(得分:3)

INSERT INTO tbl (a,b,c) VALUES (1,1,2), (2,3,4), (5,6,7) ON DUPLICATE KEY UPDATE c=VALUES(c)

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html