Mysql 使用多个值在重复密钥更新时插入值(…)

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

这样行吗?(我没有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!";

是的,它会起作用,但建议先显式命名列:

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);