这可能是一件容易的事,但是我的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
希望这是有道理的。
答案 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