2017-04-06 93 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) 

不知道這是一個很好的設計決策,當許多插入正在競爭時,可能存在潛在的主鍵違例。