我有以下疑问:
INSERT INTO table (a) VALUES (0)
ON DUPLICATE KEY UPDATE a=1
我想要插入或更新的ID.通常我会运行第二个查询来获得这个结果,因为我相信insert_id()只返回"inserted"id,而不是更新的id.
有没有一种方法可以在不运行两个查询的情况下插入/更新和检索行的ID?
我有以下疑问:
INSERT INTO table (a) VALUES (0)
ON DUPLICATE KEY UPDATE a=1
我想要插入或更新的ID.通常我会运行第二个查询来获得这个结果,因为我相信insert_id()只返回"inserted"id,而不是更新的id.
有没有一种方法可以在不运行两个查询的情况下插入/更新和检索行的ID?
Check this page out: https://web.archive.org/web/20150329004325/https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
At the bottom of the page they explain how you can make LAST_INSERT_ID meaningful for updates by passing an expression to that MySQL function.
来自MySQL文档示例:
如果表格包含自动增量列并插入...UPDATE插入一行,最后一个函数返回自动增量值.如果语句改为更新一行,则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;