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。
还有其他方法可以达到这个目的吗?