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。我想,你错过了什么。