从ON DUPLICATE KEY UPDATE获取插入/更新行的计数

Sha*_*rry 5 mysql sql on-duplicate-key

我有一个声明尝试插入记录,如果它已经存在,它只是更新记录.

INSERT INTO temptable (col1,col2,col3)
VALUES (1,2,3)
ON DUPLICATE KEY UPDATE col1=VALUES(col1), col2=VALUES(col2), col3=VALUES(col3);
Run Code Online (Sandbox Code Playgroud)

完整语句有多个插入,我希望根据UPDATE计算INSERT数.我可以用MySQL变量做这个,我还没有找到一种方法来搜索后这样做.

Yog*_*har 5

来自Mysql 文档

在“INSERT ... ON DUPLICATE KEY UPDATE”查询的情况下,如果执行了插入,则返回值为 1,对于现有行的更新,返回值为 2。

mysql_affected_rows()在您的查询之后使用,如果INSERT执行了它会给你1,如果UPDATE执行了它会给你2

  • 但是当您同时插入 2 条或更多条记录时会发生什么,比如说一条最终被插入,另一条最终被更新??? (4认同)
  • 如果记录不是完全重复的:`如果将行作为新行插入,则每行的受影响行值为 1,如果更新现有行,则为 2,如果现有行设置为其当前值,则为 0` (2认同)