如何以一对多的关系将字段从一个表移动到多个表?
在我们的系统中,我们有一个存储整个订单地址的字段(一个'Order'有很多'OrderLineItems')。我们现在需要允许每个'OrderLineItem'按顺序存储一个地址。对于到目前为止的所有订单,所有订单都在一个地址下,所以我的想法是简单地将每个OrderLineItem的地址设置为其订单的地址。
答案 0 :(得分:1)
问题中没有太多细节。你使用的是哪个sql server? 地址列是外键吗?它是什么数据类型?
在SQL Server中为每个地址列执行此操作,将address_col_name
替换为实际列名并指定任何约束。一次执行一个语句:
alter table OrderLineItem
add address_col_name address_col_type;
GO
update OrderLineItem set address_col_name = o.address_col_name
from OrderLineItem as oli
join Order as o on oli.OrderID = o.OrderID;
GO
alter table Order
drop column address_col_name;
GO
可能有许多其他注意事项,但这是基本代码。
答案 1 :(得分:0)
由于您尚未声明您的RDBMS,我将假设SQL Server,您可以将其调整为您的RDBMS风格:
alter table OrderLineItems Add Address varchar(100);
update i
set i.Address = o.Address
from OrderLineItems i
inner join Order o on o.OrderID = i.OrderID;
alter table Order Drop Column Address;