如何将字段从一个表移动到SQL中的多个表?

时间:2011-11-18 18:22:53

标签: sql relational-database sql-update database-migration

如何以一对多的关系将字段从一个表移动到多个表?

在我们的系统中,我们有一个存储整个订单地址的字段(一个'Order'有很多'OrderLineItems')。我们现在需要允许每个'OrderLineItem'按顺序存储一个地址。对于到目前为止的所有订单,所有订单都在一个地址下,所以我的想法是简单地将每个OrderLineItem的地址设置为其订单的地址。

  • 我们正在使用MySQL 5.5.17
  • 地址不是外键

2 个答案:

答案 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;