我在SQL Server 2012中工作。我需要将数据从一个表迁移到另一个表,但我也需要复制数据。这是设置:
Table A
与Table 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
因此,在此示例中,Age
和Name
需要从Table A
复制到与Table B
共享Table_A_ID
的所有Table A
记录ID字段。迁移成功后,我将从Age
删除姓名和Table A
。
答案 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
,以避免需要单独运行INSERT
,UPDATE
和{{1语句