Sql 使用新id值从另一个表复制数据

Sql 使用新id值从另一个表复制数据,sql,Sql,我有一个问题:我有三个表,表a,表B和表C 表A是主表,其id列用表B和表C进行FK键控 我想从每个表中复制相同的数据,并将这些复制的行插入到其自己的表中,新id为表A 我们通常这样做 insert into table A (id, name, age) select name, age from table A 这里新行获得一个新id,因为id列是自动递增的 但是,当我们将表B的数据复制到表B本身时,我们如何从表A中指定新id???这里输入的是FK键 insert into tab

我有一个问题:我有三个表,
表a
表B
表C

表A
是主表,其id列用
表B
表C
进行FK键控

我想从每个表中复制相同的数据,并将这些复制的行插入到其自己的表中,新id为
表A

我们通常这样做

insert into table A (id, name, age) 
   select name, age from table A
这里新行获得一个新id,因为
id
列是自动递增的

但是,当我们将
表B
的数据复制到
表B
本身时,我们如何从
表A
中指定新id???这里输入的是FK键

insert into table B (tab_B_Id, id, mark, subject) 
    select id, mark, subject 
    from tab B.

[id is the pk of `Table A` and FK to `Table B` and `Table C`]
  • 如何将新创建的id值从表A插入其他表
  • 是否有任何方法可以在不指定列表中所有列名的情况下执行此操作 都是select子句 任何帮助都将不胜感激

  • 在SQL Server中,您可以选择获取插入的ID。也可以在
    INSERT
    语句中使用子句

  • 如果要获取所有列,则不需要指定它们,否则需要指定。请注意,显式指定列是一种很好的做法。如果添加新列,您不希望旧代码的行为有所不同


  • 对于问题1,这个如何:

    insert into table B (tab_B_Id, mark, subject) select mark, subject from tab B
    
    然后

    但是我没有测试代码。可能有一些语法错误。
    我不太理解你的问题2。

    SCOPE\u IDENTITY
    仅在插入一行时有效-它将返回范围中IDENTITY列的最后一个值;它不处理多个rowshi sakura的插入,谢谢回复。对于答案1,如何插入id值(表A-主表中的新id值)?您好,感谢您的回复。对于答案1,我将如何插入表A中的id值?主表A有一个id列,它包含一个主键并自动递增。此id在表B中被引用为FK。因此,当我们从表A复制2行并将复制的2行插入同一个表(即表A)时,将为复制的行插入新的id值。现在来看表B。当我们对表B做同样的事情时,我将如何将引用为FK的表A的id值插入表B??我的第二个问题是,没有指定select子句中的所有列名称,有什么方法可以做到吗?哦。。。“插入表B(id、标记、主题)从表A中选择id”如何?标记和主题应该是要插入的值。我假设tab_B_Id是表B中的一个PK,所以它应该是自动递增的,就像表a中的Id一样。
    insert into table B(id) where tab_B_Id="THE ID VALUE THAT YOU GENERATED EARLIER" select id from table A