我有 3 个表,其中一个是另外两个表的父表。我想分离出一列,根据 FK 将其移动到子表中。这需要在 SQL 中完成(没有工作室快捷方式)。
我有 2 个这样的表:
TABLE A:
internalID | id | otherdata
============+======+===========
myid | 1 | ...
------------+------+-----------
my2ndid | 2 | ...
------------+------+-----------
1234 | 3 | ...
------------+------+-----------
5678 | 4 | ...
TABLE B:
internalID | FK_toTableA | otherdata
============+===============+===========
NULL | 1 | ...
------------+---------------+-----------
NULL | 2 | ...
TABLE C:
internalID | FK_toTableA | otherdata
============+===============+===========
NULL | 3 | ...
------------+---------------+-----------
NULL | 4 | ...
我想将 internalID
从 TABLE A
移动或复制到 TABLE B
和 TABLE C
-根据FK关系,然后从TABLE A
中删除internalID列。
生成的表格应如下所示:
TABLE A:
id | otherdata
======+===========
1 | ...
------+-----------
2 | ...
------+-----------
3 | ...
------+-----------
4 | ...
TABLE B:
internalID | FK_toTableA | otherdata
============+===============+===========
myid | 1 | ...
------------+---------------+-----------
my2ndid | 2 | ...
TABLE C:
internalID | FK_toTableA | otherdata
============+===============+===========
1234 | 3 | ...
------------+---------------+-----------
5678 | 4 | ...
SQL 版本:13.0.4001.0
最佳答案
您可以简单地使用update
语句:
update b
set b.internalID = a.internalID
from b inner join
a
on a.id = b.FK_toTableA;
之后,您可以从表 a
中删除列 internalId
。
alter table a
drop column internalId;
关于sql-server - 如何将列移动到另一个表,替换 FK?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51898001/