MySQL批量插入依赖于另一个表

时间:2016-08-15 15:50:29

标签: mysql

我有一个案例,我正在进行两次查询:query1INSERT ... ON DUPLICATE KEY UPDATE上的批量table1。对于query2,我想在INSERT上使用一些应用程序数据执行另一个批量table2,并使用从query1插入/更新的ID。我知道我可以通过中间查询执行此操作,从table1中选择我需要的ID,然后将它们与应用程序数据一起插入table2,但我真的想避免额外的网络返回 - 和 - 该查询的第四个以及数据库开销。有没有什么方法可以在运行时query1插入/更新ID,或者在INSERT ... SELECT FROM中执行某种复杂但相对便宜的query2来避免这种情况?

据我所知,如果没有单独的查询,就无法从query1返回添加/修改的ID,而我无法想到批量INSERT ... SELECT FROM的方法,其中每个的插入值都是行取决于所选择的值,但我希望被证明是错误的,或者展示出一种方法。

1 个答案:

答案 0 :(得分:2)

由于批量INSERT,无法获取一组ID。

您有一个选项确实是运行SELECT查询来获取ID并在第二个批量INSERT中使用它们。但这很麻烦。

另一种选择是将第二批量INSERT投放到临时表中,让我们称之为table3,然后使用INSERT INTO table2 ... SELECT FROM ... table1 JOIN table3 ...

使用类似的用例,我们最终发现这是最快的选项,因为您正确地索引table3。 请注意,在这种情况下,您不需要在代码中循环SELECT,这很不错。