새로운 항목이 이미 아니다 곳에 삽입하면 테이블이 이미 일부 값이 포함되어 있음을 우려하는 경우
insert into RefundDetails
(ID,StatusModified,RefundAmount,OrderNumber)
select distinct
O.id
,O.StatusModified
,OI.RefundAmount
,O.OrderNumber
from Monsoon.dbo.[Order] as O WITH (NOLOCK)
JOIN Monsoon.dbo.OrderItem as OI WITH (NOLOCK)
on O.Id = OI.OrderId
WHERE o.ID in
(
SELECT OrderID
FROM Mon2QB.dbo.monQB_OrderActivityView
WHERE ACTIVITYTYPE = 4
AND at BETWEEN '10/30/2012' AND '11/3/2012'
)
AND O.StatusModified < '11/3/2012'
또는 단지로 지정하여 select 문에서 중복을 제거하는 DISTINCT 키워드를 사용
를
insert into RefundDetails
(ID,StatusModified,RefundAmount,OrderNumber)
select distinct
O.id
,O.StatusModified
,OI.RefundAmount
,O.OrderNumber
from Monsoon.dbo.[Order] as O WITH (NOLOCK)
JOIN Monsoon.dbo.OrderItem as OI WITH (NOLOCK)
on O.Id = OI.OrderId
WHERE o.ID in
(
SELECT OrderID
FROM Mon2QB.dbo.monQB_OrderActivityView
WHERE ACTIVITYTYPE = 4
AND at BETWEEN '10/30/2012' AND '11/3/2012'
)
AND O.StatusModified < '11/3/2012'
--assuming we just need to check o.id to determine a duplicate:
and O.id not in
(
select o.id
from RefundDetails
)
--alternatively, if the entire record counts as a duplicate
and not exists
(
select top 1 1
from RefundDetails b
where O.id = b.id
and O.StatusModified = b.StatusModified
and OI.RefundAmount = b.RefundAmound
and O.OrderNumber = b.Order Number
마지막으로 좀 더 고급 뭔가를하려는 경우 (즉, 당신이 새로운 주문을 삽입하고 기존 업데이트 할 수 있도록하기 위해), 당신은 SQL 또는 Oracle을 사용하는 경우, 당신은 MERGE 문이 있습니다 http://blog.sqlauthority.com/2008/08/28/sql-server-2008-introduction-to-merge-statement-one-statement-for-insert-update-delete/
을
사용을 호출하려면 .. –