检索MySQL的所有LAST_INSERT_ID批处理INSERT ... ON DUPLICATE UPDATE ...?

时间:2015-07-22 09:53:40

标签: mysql

t1中的当前行:

id,f1,f2,f3
1,'01','02','03'
2,'11','12','13'
4,'41','42','43'

其中f1是唯一的关键字段。

现在我们执行此查询:

INSERT INTO `t1` (`f1`, `f2`, `f3`) VALUES 
('11', '12', '13'),
('21', '22', '23'),
('31', '32', '33'),
('41', '42', '43'),
('51', '52', '53')
ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id)

如何获取插入/更新的所有行的最后插入ID?

对于上面的示例,我相信ID将是:

2 五 6 4 7

右?

但是如何在使用ON DUPLICATE KEY UPDATE子句进行批量INSERT查询之后从MySQL获取它们呢?

this answer开始,LAST_INSERT_ID“为您提供在最后一批中插入的第一行的ID”,如果所有行都是新插入的,则可以按顺序获取所有其余ID。

显然,当我们有ON DUPLICATE KEY UPDATE时,这是一个完全不同的故事。那么有没有办法获得批量INSERT的所有最后插入ID与ON DUPLICATE KEY UPDATE?尝试谷歌但没有发现任何帮助。

为什么我需要这个

插入t1后,我需要将刚刚插入的行与t2中的一行相关联。这是一个多对多关系,因此我需要在t1_x_t2中插入t2行的ID以及t1中插入的所有ID。

还有其他方法可以达到这个目的吗?

0 个答案:

没有答案