2017-04-06 82 views
0

我工作的一个查询,像这样:SQL服务器:插入选择其中排序顺序等于插入主键

INSERT INTO TableA (value1, value2) 
    SELECT Value1, Value2 
    FROM TableB 
    WHERE TableB.sortOrder = THE ID FOR THE RECORD GETTING INSERTED 

我所试图做的是与价值从TableB其中TableB.sortOrder插入TableA等于记录插入的ID。我正在努力做甚么?或者我必须将SCOPE_IDENTITY()放入一个变量中,然后做一个单独的选择,然后进行更新?

+0

你可以给例子输入和你想要的输出。 – TriV

+1

您的预期结果似乎与该描述不符。 –

+0

根据您提供的描述,它应该插入TableB的所有四行。与所有4种情况一样,_ID_ = _SortOrder_。我想,你错过了一些东西。 –

回答

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) 

不知道这是一个很好的设计决策,当许多插入正在竞争时,可能存在潜在的主键违例。