sql-server - 如何将列移动到另一个表,替换 FK?
问题描述
我有 3 张表,一张是另外两张的父表。我想分离一列,将其移动到基于 FK 的子表中。这需要在 SQL 中完成(没有工作室快捷方式)。
我有两张这样的桌子:
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 | ...
我想根据 FK 关系internalID
从& - 移动或复制,然后从TABLE A
中删除 internalID 列。TABLE B
TABLE C
TABLE A
结果表应如下所示:
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;
之后,您可以internalId
从 table中删除列a
。
alter table a
drop column internalId;
推荐阅读
- python - 为 Conv2D 模型重塑图像
- c# - 输入下一个字段时输入的日期消失
- button - PySimpleGUI 不返回任何内容
- python - cerberus - 如何验证任意字典键?
- amazon-web-services - 无法担任角色并验证指定的 targetGroupArn。请验证正在传递的 ECS 服务角色是否具有适当的权限
- python - 列出二维数组numpy中具有特定值的所有坐标x,y
- r - ggplot 对选择性输入没有反应
- javascript - 如何从 rmarkdown paged-HTML 文档中的特定页面中排除 HTML DIV?
- python - 将列表和标量列表转换为 PyTorch 张量列表会引发警告
- python - Python try except - 在错误变量中包含自定义消息