2017-04-06 7 views
0

私はそうのようなクエリに取り組んでいます:SQL Serverの:選択挿入ソート順がに等しい挿入主キー

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

私は何をしようとしていることTableBTableB.sortOrderから値をTableAに挿入されます挿入されるレコードのidと等しくなります。私も何をしようとしていますか?または、SCOPE_IDENTITY()を変数に入れて、別の選択を行ってから更新する必要がありますか?

+0

入力例と希望する出力を教えてください。 – TriV

+1

あなたの期待した結果は、説明と一致していないようです。 –

+0

提供された説明によると、TableBの4つの行をすべて挿入する必要があります。 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) 

わかりません、多くのインサートが競合している場合、潜在的な主キー違反が存在する可能性があります。

関連する問題