2015-06-30 46 views
0

我需要将我的OrderLines表中的行迁移到新数据库,但我只希望那些已经迁移匹配头的行已经迁移。只传输行有匹配订单头的订单行

我使用SQL Server管理Studio和尝试下面的代码没有任何的运气:

INSERT INTO dbNew.dbo.OrderLines 
(columns) 

SELECT columns 
FROM dbOld.dbo.OrderLines 

WHERE EXISTS 
(SELECT * FROM dbNew.dbo.OrderHeader 
    WHERE dbOld.dbo.OrderLines.OrderID = dbNew.dbo.OrderHeader.OrderID) 
+0

有'OrderLines'和'OrderHeader'之间的关系?它是什么?它不在您的示例SQL中进行描述。相反,对“OrderDetails”表有一个悬而未决的引用。这个如何发挥作用? – sstan

+0

啊,sh1t。抱歉。 OrderDetails和OrderLines是同一张表。 WIll修改。 –

回答

1

试试这个:

insert into dbNew.dbo.OrderLines (columns) 
select columns 
from dbOld.dbo.OrderLines old_lines 
where exists (
    select null 
    from dbNew.dbo.OrderHeader h 
    where old_lines.OrderID = h.OrderID 
) 

编辑:哎呀,固定错字。

+0

“无效的对象名称dbNew.dbo.OrderLines” –

+0

您的'dbNew'数据库中没有'dbo.OrderLines'表吗? – sstan

+0

表结构是一样的:)。我可以在dbNew.dbo.OrderLines上运行一个简单的SELECT命令。 –

0

你可以试试这个:

INSERT INTO dbNew.dbo.OrderLines (columns) 
SELECT columns 
FROM dbOld.dbo.OrderLines 
where 
OrderID in 
(SELECT OrderID FROM dbNew.dbo.OrderHeader)