我正在处理类似的查询:
use strict
我要做的是使用INSERT INTO TableA (value1, value2)
SELECT Value1, Value2
FROM TableB
WHERE TableB.sortOrder = THE ID FOR THE RECORD GETTING INSERTED
中的值插入TableA
,其中TableB
等于插入记录的ID。我甚至想做什么?或者我是否必须将TableB.sortOrder
放入变量并单独选择然后更新?
答案 0 :(得分:0)
在子查询中增加TableA的最大ID,确保在多个插入争用相同插入的场景中显式填充id:
INSERT INTO TableA (id, value1, value2)
SELECT sortOrder, Value1, Value2 FROM TableB
WHERE TableB.sortOrder = (select max(id) + 1 from TableA)
不确定这是一个好的设计决策,当许多插入竞争时,可能存在潜在的主键违规。