我正在使用Transact-SQL,比方说我有......
TABLE_1
ID_MAIN DATA
1 red
2 blue
TABLE_2
ID_SUB ID_MAIN TYPE
3 1 soft
4 2 rough
...对于“TABLE_1”中的每个条目,我想将其复制到具有新唯一ID(主键)的“TABLE_1”,并且对于“TABLE_1”中的每个条目,我还要复制条目在“TABLE_2”中引用它(外键)以及新的id。
TABLE_1
ID_MAIN DATA
1 red
2 blue
3 red
4 blue
TABLE_2
ID_SUB ID_MAIN TYPE
3 1 soft
4 2 rough
5 3 soft
6 4 rough
我了解如何复制条目并更改某些字段
INSERT INTO TABLE_1 (ID_MAIN, DATA)
SELECT NEWID(), DATA
FROM TABLE_1
我的问题更倾向于如何迭代投放TABLE_1
中的每个条目,使用新的ID复制条目,并且每个条目添加新行到TABLE_2
,从{TABLE_1
引用这些ID 1}}
希望这是有道理的,不确定它是否对我有用哈哈
感谢您的帮助!
答案 0 :(得分:1)
如果我理解你想要的东西:
INSERT INTO
Table_2
(
table_2_id
, table_1_id
, type
)
SELECT
table_2_id = ROW_NUMBER() OVER (ORDER BY a.table_1_id)
, table_1_id = a.table_1_id
, type
CASE
WHEN a.data = 'red' THEN 'soft'
WHEN a.data = 'blue' THEN 'rough'
END
FROM
table_1 a
这将获取表1中的所有记录,将它们插入表2,根据表1数据列分配类型,并增加表2的ID。