Mysql 使用多个值在重复密钥更新时插入值(…)
这样行吗?(我没有mysql服务器可用于测试>) mytable:Mysql 使用多个值在重复密钥更新时插入值(…),mysql,insert,Mysql,Insert,这样行吗?(我没有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
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!";
是的,它会起作用,但建议先显式命名列:
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
的主键冲突。您需要决定在这种情况下应该采取什么措施,并相应地对重复键应用。我不明白为什么不:
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] ... ]
从。甚至还有一个例子
是的。但是,如果您运行的SQL语句非常大,请小心达到最大SQL大小(我认为默认值为1Mb),在达到此长度时,可能会出现一些奇怪的mysql错误关键是什么?ID是主键吗?如果是这样,您可以在查询中获得一个副本吗?在重复键上,该键仅适用于唯一值或键组合,因此“myid”是主键。假设桌子上已经有几排了谢谢你的回答Michael!(我会尽快接受)谢谢你的回答和文件,埃德尔先生!!!(迈克尔跑快了一点;)是的,没错。如果我没记错的话,它是最大数据包大小或最大允许数据包大小。。。
INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);