如何获取更新行的ID行?

9
这是我的查询:
INSERT INTO table (value) VALUES (value) ON DUPLICATE KEY UPDATE value=value

使用mysql_insert_id()函数可以获取新插入行的ID,但是如何获取更新行的ID呢?

我尝试了mysql_insert_id()函数,但对于更新的行,我得到的是0。


1
我认为在MySQL中不可能实现。 - Haim Evgi
1
想要看到发布的答案。过去也遇到过同样的问题。我总是在之后执行选择。 - David
5个回答

2

在“ON DUPLICATE KEY update…”查询中,最后更新的行ID已更新。 - Leonardo
1
@Leonardo,该页面上的最后一个示例向您展示了如何实现此操作。 - nos

1

没有办法这样做。你可以执行 SELECT id FROM table WHERE value = value;


0

你可以使用mysql_insert_id()函数来得到插入的id。

然而,如果你与ON DUPLICATE KEY UPDATE一起使用,如果你想要mysql_insert_id()返回更新的键而不是新生成的被插入的键,那么你需要进行更多的操作。

把你的SQL改成:

INSERT INTO table (value) VALUES (value) 
       ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id),value=value;

点击这里查看更多信息here


0

既然你已经有了一个WHERE语句,你可以使用不同的查询来选择它。mysql_insert_id()的确是做这个的。从插入中获取一个ID。


0

从MySQL 5.1.12开始,它是可能的。MySQL的last_insert_id函数将返回插入和更新操作的自增字段的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接