我希望能够在一次调用中插入/更新表的多行,但是我推入数据库的数据可能是新的,也可能不是。基本上我有一个表格列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个左右的查询中才可能需要指导。
答案 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