पहला (और सबसे स्पष्ट) उत्तर डेटा को साफ करना है ताकि आपके पास डुप्लिकेट न हों। ऐसा लगता है कि आपके द्वारा प्रदान किया गया नमूना डेटा एक बग का परिणाम है।
जहां तक merge
का सवाल है कथन, यदि डेटा वास्तव में पूरी तरह से डुप्लिकेट है, तो आप केवल distinct
. का उपयोग कर सकते हैं :
MERGE INTO maintable pr
USING (SELECT DISTINCT contract,
membertype,
address1,
city,
state,
zipcode,
countrycode
FROM incrementaltable pra
WHERE pra.membertype = 'Parent')
ON (pr.contract = pra.contract)
WHEN MATCHED THEN
UPDATE SET pr.address1 = pra.address1,
pr.city = pra.city,
pr.state = pra.sate,
pr.zipcode = pra.zipcode,
pr.countrycode = pra.countrycode
WHERE address1 IS NULL AND pr.membertype <> 'Parent'