2017-03-16 75 views
0

這可能是一件容易的事情,但是使用我有限的SQL技能感覺很難。如何複製數據,更改一列,還更新相關表?

我有兩個表:從表2

table1 

id table2_id value 
1 2   a 
2 2   b 
3 1   c 

table2 

id value 
1 one 
2 hello 
3 three 
4 hello 

的問題是,如何複製數據,其中值==「你好」,然後插入回表2和表1更新與相應的值?

所以在最後,這兩個表最終這樣看:

table1 

id table2_id value 
1 2   a 
2 2   b 
3 1   c 
4 5   a 
5 5   b 
6 6   a 
7 6   b 

table2 

id value 
1 one 
2 hello 
3 three 
4 hello 
5 hello -- copied from 2 
6 hello -- copied from 4 

希望,這是有道理的。

+0

第三個Hello來自表2中的ID 6,使用您勾勒的邏輯它應該只複製id 4和5? –

+0

另外,表1中的值來自哪裏? –

+0

@OwainEsau,抱歉意味着將4添加到原始表格2中。 –

回答

0

有幾種方法可以做你想做的。我更喜歡這一個:

DECLARE 
    @output TABLE (id int) --here we'll store identities of rows newly copied into Table2 

INSERT Table2 (value) 
    OUTPUT inserted.id INTO @output(id) --presave identities 
SELECT value --copy the hello-rows 
    FROM Table2 
    WHERE value='hello' 

INSERT Table1 (table2_id, value) 
SELECT id, 'a' FROM @output --you could change the logic of 'a' and 'b' values, it's unclear for me from the conditions 
UNION ALL 
SELECT id, 'b' FROM @output 
+0

以前從未顯得'inserted.id'。謝謝! –