这会有用吗? (我没有可用于测试>。<)
的mysql服务器 MYTABLE:
myid:整数/主键
mydata:文字
INSERT INTO mytable VALUES (1,"new row"),(2,"brand new row"),(3,"yup another new row"), [.....more and more coma-separated parentheses with values], (1000,"guess what? yes new row") ON DUPLICATE KEY UPDATE mydata = "dang, this row already exists!";
答案 0 :(得分:4)
是的,它会起作用,但建议首先明确命名列:
INSERT INTO mytable
(myid, mydata)
VALUES (1,"new row"),(2,"brand new row"),(3,"yup another new row")
此外,单引号在语法上更具可移植性,但MySQL会正确处理它们。
VALUES (1,'new row'),(2,'brand new row'),(3,'yup another new row')
注意,如果您已在mytable
中使用了值,则可能会遇到id
的主键冲突。您需要决定在该情况下应采取的措施,并相应地应用ON DUPLICATE KEY
。
答案 1 :(得分:2)
我不明白为什么不:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
来自http://dev.mysql.com/doc/refman/5.5/en/insert.html的。甚至有一个例子here
INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
答案 2 :(得分:0)
是的。但是,如果您运行的是非常大的SQL语句 - 请注意达到最大SQL大小(我认为默认值为1Mb),在达到此长度时可能会出现一些奇怪的mysql错误