2016-01-16 31 views
0

我有這些2個表:INSERT行如果不存在

Table P 

A | B  
--------- 
X | 2 
X | 7 
X | 10 
X | 28 
Y | 24 

Mapping M 

C | D 
----------- 
7 | 2136 
28 | 786 
24 | 4212 
124 | 5311 
935 | 6012 

如果我能找到塔B在表P中的匹配值與在映射M的列C中的值,我需要以將列D的值添加到表P中。

例如,表P的X和2的第1條記錄在映射M的C列中找不到2,因此不會添加任何內容。

第二記錄X和7,I可以在C列中找到7,所以我要去添加X和2136到表P.

因此被添加到表P中:

X | 2136 
X | 786 
Y | 4212 

我發現插入這3行非常具有挑戰性。

我可以這樣做:

SELECT P.*, M.D FROM @TableP P 
    JOIN @MappingTable M ON (P.B = M.C) 

,並把結果到一個臨時表和INSERT,但我要如何做,在1條INSERT語句?

+0

開始把一些努力 –

+0

我在同一時間工作的問題的答案也一樣,所以我將粘貼的答案,如果我發現它。 –

+0

添加你到目前爲止嘗試過的任何東西 –

回答

1

我才意識到這是相當簡單:

INSERT INTO @TableP 
SELECT P.A, M.D FROM @TableP P 
    JOIN @MappingTable M ON (P.B = M.C) 
+0

你可以標記爲答案:) –

相關問題