如何复制数据,更改一列,还更新相关表?

时间:2017-03-16 22:24:23

标签: sql-server tsql

这可能是一件容易的事,但是我的sql技能有限,感觉很难。

我有两张桌子:

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

问题是,如何从table2复制数据,其中value ==' hello'并插回到table2,并使用相应的值更新table1?

所以最后,这两个表最终看起来像这样:

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

希望这是有道理的。

1 个答案:

答案 0 :(得分: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