如何将一个表的每个记录中的数据复制到与第一个表相关的另一个表的多个记录中?

时间:2014-12-16 16:13:36

标签: sql sql-server tsql sql-server-2012 sql-update

我在SQL Server 2012中工作。我需要将数据从一个表迁移到另一个表,但我也需要复制数据。这是设置:

Table ATable B的关系为1对多。 Table A中每条记录中的部分数据需要移动到与Table B记录相关的多个Table A记录中。 Table A中的每条记录都需要将其数据复制到table B的多个记录中,以便Table B中链接到给定Table A记录的任何记录。

如果可能的话,我需要一种方法来使用单个SQL UPDATE。我需要了解SQL的工作原理。我无法通过Google或搜索SO来找到解决方法。

Table A:
ID : int
Name : varchar2
Age : int
Type_ID : int
Rating : int

Table B:
ID : int
Table_A_ID : int
Name : varchar2
Age : int
Subject_ID : int
Note : varchar2

因此,在此示例中,AgeName需要从Table A复制到与Table B共享Table_A_ID的所有Table A记录ID字段。迁移成功后,我将从Age删除姓名和Table A

1 个答案:

答案 0 :(得分:2)

更新B非常简单,只需将两个表连接在一起,指明要更新的表,并将列映射到:

UPDATE b
SET b.Age = a.Age, 
    b.Name = a.Name
FROM TableB b
INNER JOIN TableA a
ON b.Table_A_ID = a.ID;

如果您还需要添加缺失的行或删除已删除的行,您可以改为查看MERGE,以避免需要单独运行INSERTUPDATE和{{1语句