如何将一列移至另一个表,以替换FK?

时间:2018-08-17 14:53:58

标签: sql-server

我有3个表,一个是其他两个的父表。我想分离出一列,将其移至基于FK的子表中。这需要在SQL中完成(没有Studio快捷键)。

我有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       | ...

我想将internalIDTABLE A移动或复制到TABLE BTABLE C-基于FK关系,然后从{{1 }}。

结果表应如下所示:

TABLE A

SQL版本:13.0.4001.0

2 个答案:

答案 0 :(得分:3)

您可以简单地使用update语句:

update b
    set b.internalID  = a.internalID 
from b inner join
     a
     on a.id = b.FK_toTableA; 

然后,您可以从表internalId中删除列a

alter table a
    drop column internalId;

答案 1 :(得分:1)

Update TableB
set internalId = a.InternalId
from TableA a
where tableB.FK_toTableA = a.Id;

Update TableC
set internalId = a.InternalId
from TableA a
where tableC.FK_toTableA = a.Id;

alter table tableA drop column internalId;