开发者社区> 问答> 正文

MySQL ON DUPLICATE KEY-最后插入ID?

我有以下查询:

INSERT INTO table (a) VALUES (0) ON DUPLICATE KEY UPDATE a=1 我想要插入或更新的ID。通常我运行第二个查询以获取此信息,因为我相信insert_id()仅返回“插入的” ID,而不返回更新的ID。

有没有一种方法可以在不运行两个查询的情况下进行INSERT / UPDATE和检索行ID?

展开
收起
保持可爱mmm 2020-05-11 17:03:10 445 0
1 条回答
写回答
取消 提交回答
  • 检出此页面:https : //web.archive.org/web/20150329004325/https : //dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html 在页面底部他们说明了如何通过将表达式传递给该MySQL函数来使LAST_INSERT_ID对更新有意义。

    从MySQL文档示例中:

    如果表包含AUTO_INCREMENT列,并且INSERT ... UPDATE插入一行,则LAST_INSERT_ID()函数将返回AUTO_INCREMENT值。如果该语句改为更新一行,则LAST_INSERT_ID()没有意义。但是,您可以通过使用LAST_INSERT_ID(expr)解决此问题。假设id是AUTO_INCREMENT列。为了使LAST_INSERT_ID()对于更新有意义,请按如下所示插入行:

    INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;来源:stack overflow

    2020-05-11 17:03:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像