SQL Server:插入到选择中,其中排序器等于插入的主键
我正在处理这样一个查询:SQL Server:插入到选择中,其中排序器等于插入的主键,sql,sql-server,Sql,Sql Server,我正在处理这样一个查询: INSERT INTO TableA (value1, value2) SELECT Value1, Value2 FROM TableB WHERE TableB.sortOrder = THE ID FOR THE RECORD GETTING INSERTED 我试图做的是使用TableB中的值插入TableA,其中TableB.sortOrder等于要插入的记录的id。我想做的是可能的吗?或者我必须将SCOPE\u IDENTITY()放入一
INSERT INTO TableA (value1, value2)
SELECT Value1, Value2
FROM TableB
WHERE TableB.sortOrder = THE ID FOR THE RECORD GETTING INSERTED
我试图做的是使用
TableB
中的值插入TableA
,其中TableB.sortOrder
等于要插入的记录的id。我想做的是可能的吗?或者我必须将SCOPE\u IDENTITY()
放入一个变量中,然后进行单独的选择和更新吗?在子查询中从表a增加最大id,确保在多个插入争用相同插入的情况下显式填充id:
INSERT INTO TableA (id, value1, value2)
SELECT sortOrder, Value1, Value2 FROM TableB
WHERE TableB.sortOrder = (select max(id) + 1 from TableA)
不确定这是否是一个好的设计决策,当许多插入项发生冲突时,可能存在潜在的主键冲突。能否给出示例输入和所需输出。您的预期结果似乎与描述不一致。根据您提供的描述,它应插入表B的所有四行。与所有4种情况一样,ID=SortOrder。我想,你错过了什么。