假设 [Order Details] 是 [Order Detail11] 的副本。您只想插入或更新您的记录:您可以使用 MERGE (what is a MERGE? here),例如:
MERGE [dbo].[Order Details]
USING ( select OrderID,ProductID,UnitPrice,Quantity,Discount
from[dbo].[Order Detai11]
where OrderID between 1 and 150000
) As tblMergeDetail(OrderID,ProductID,UnitPrice,Quantity,Discount)
ON ( tblMergeDetail.OrderId = [dbo].[Order Details].OrderId )
WHEN MATCHED THEN
SET ProductID = tblMergeDetail.ProductID,
UnitPrice = tblMergeDetail.UnitPrice,
Quantity = tblMergeDetail.Quantity,
Discount = tblMergeDetail.Discount
WHEN NOT MATCHED THEN
INSERT (OrderID,ProductID,UnitPrice,Quantity,Discount)
VALUES (
tblMergeDetail.OrderID,
tblMergeDetail.ProductID,
tblMergeDetail.UnitPrice,
tblMergeDetail.Quantity,
tblMergeDetail.Discount
);
如果您只想复制不存在的记录,您可以排除 [Order Details] 中的值,例如:
insert into [dbo].[Order Details]
(OrderID,ProductID,UnitPrice,Quantity,Discount)
select OrderID,ProductID,UnitPrice,Quantity,Discount
from[dbo].[Order Detai11] as OD1
where OD1.OrderID between 1 and 150000
and NOT EXISTS ( select exclusionTbl.OrderID
from [dbo].[Order Details] exclusionTbl
where exclusionTbl.OrderID = OD1.OrderID
)
编辑:
另一个例子:
insert into [dbo].[Order Details]
(OrderID,ProductID,UnitPrice,Quantity,Discount)
select OrderID,ProductID,UnitPrice,Quantity,Discount
from[dbo].[Order Detai11] as OD1
where OD1.OrderID between 1 and 150000
and OD1.OrderID NOT IN( select exclusionTbl.OrderID
from [dbo].[Order Details] exclusionTbl
where exclusionTbl.OrderID between 1 and 150000
)
对于 NOT EXISTS 查询:我们检查在 [Order Details] 中不存在我们想要从 [OrderDetai11] 插入的 OrderID
对于 NOT IN 查询:我们检查所有 [OrderDetai11].OrderIDs,没有人包含在 [Order Details].OrderID 列表中。它实现了与 NOT EXISTS 查询相同的结果。