T-SQL复制行到同一个表和另一个表与外键

时间:2015-10-15 19:22:40

标签: sql-server tsql insert copy

我正在使用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}}

希望这是有道理的,不确定它是否对我有用哈哈

感谢您的帮助!

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。