我在数据库A中的表Massconfusion中有两个字段(Utter和Misery)我需要移动到一个名为Massconfusion数据库B的表中的两个字段(也称为Utter和Misery)。有两个键(主键和子键)保持这些数据与数据库A和B中的其余信息正确分类 (基本上我们在某种程度上丢失了两个字段中的大部分信息,并试图从我们的数据库的旧副本中获取它,并且所有简单的恢复方法都没有用。)
我是sql脚本的新手。所以我在恳求,帮助!提前谢谢。
答案 0 :(得分:0)
UPDATE B.dbo.MassConfusion
SET Utter = (SELECT Utter FROM A.dbo.MassConfusion WHERE A.PrimeKey = B.PrimeKey)
UPDATE B.dbo.MassConfusion
SET Misery= (SELECT Misery FROM A.dbo.MassConfusion WHERE A.PrimeKey = B.PrimeKey)
根据记录的数量以及它们的混乱情况,你可能最好插入一个新的表格,但.... UPDATE
可能会很慢而且价格昂贵,具体取决于你有多少索引等等
答案 1 :(得分:0)
我还不清楚你的MassConfusion表的主键是什么。第一个版本假设MassConfusion的主键只是Primary
。如果主键实际上是Primary
和SubKey
的组合,则使用第二个版本。
版本1 :主键由一列
组成/* Just to make it clear that this is run from Database B */
Use B
go
update MCB
set Utter = MCA.Utter,
Misery = MCA.Misery
from MassConfusion MCB
inner join A.dbo.MassConfusion MCA
on MCB.Primary = MCA.Primary
版本2 :主键是两列的组合
/* Just to make it clear that this is run from Database B */
Use B
go
update MCB
set Utter = MCA.Utter,
Misery = MCA.Misery
from MassConfusion MCB
inner join A.dbo.MassConfusion MCA
on MCB.Primary = MCA.Primary
and MCB.SubKey = MCA.SubKey