[주문 세부 정보]가 [주문 세부 사항 11]의 사본이라고 가정합니다.당신은 당신의 레코드를 삽입하거나 업데이트 할 :
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
);
방금 [주문 정보] 내부의 값을 제외 할 수 있습니다 만 아무도 존재하지 않는 기록을 복사 할 경우, 예를 들면 : 당신은 MERGE (what is a MERGE? here), 예를 사용할 수 있습니다 :
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
)
EDIT :
타 예 :
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 쿼리의 경우 : [OrderDetai11]에서 삽입하려는 [Order Details] 내에 OrderID가 없음을 확인합니다.
NOT IN 쿼리의 경우 : [OrderDetai11] .OrderIDs를 모두 확인합니다 아무도 [Order Details] .OrderID의 목록에 포함되어 있지 않습니다. NOT EXISTS 쿼리와 동일한 결과를 얻습니다.
... 벌금 ... 여기 두 번째 쿼리에 NOT exists 부분을 설명 할 수 있습니까 – Bodhi
[처음에는 PRIMARY KEY가 무엇인지 알아야합니다.] (https://msdn.microsoft.com/en-us/library/ms179610.aspx) 그 사실을 이해했다면 이제는 오류가 발생하는 이유를 알게되었습니다. : "PRIMARY KEY 제약 조건 위반". 두 번째 쿼리의 내 조건은 키 (OrderID)의 중복을 트리거하지 않는 것입니다. – Lostblue
Arg 그냥 OrderID가 기본 키라고 가정했다고 알고 있습니다. 그 맞습니까? 그렇지 않으면 나는 내 대답 모두에 완전히 틀리다. – Lostblue