मैं SQL सर्वर में विलय चला रहा हूं। मेरे अपडेट में, यदि मूल्य बदल गए हैं तो मैं केवल पंक्ति को अपडेट करना चाहता हूं। एक संस्करण पंक्ति है जो प्रत्येक अद्यतन पर वृद्धि करती है।मर्ज करें - केवल तभी अपडेट करें जब मान बदल गए हैं
MERGE Employee as tgt USING
(SELECT Employee_History.Emp_ID
, Employee_History.First_Name
, Employee_History.Last_Name
FROM Employee_History)
as src (Emp_ID,First_Name,Last_Name)
ON tgt.Emp_ID = src.Emp_ID
WHEN MATCHED THEN
UPDATE SET
Emp_ID = src.Emp_ID,
,[VERSION] = tgt.VERSION + 1
,First_Name = src.First_Name
,Last_Name = src.Last_Name
WHEN NOT MATCHED BY target THEN
INSERT (Emp_ID,0,First_Name,Last_Name)
VALUES
(src.Emp_ID,[VERSION],src.First_Name,src.Last_Name);
अब, अगर मैं केवल पंक्ति, और इस तरह वेतन वृद्धि संस्करण को अद्यतन करना चाहता था, केवल अगर नाम बदल गया है: नीचे एक उदाहरण है।
के बजाय @ a1ex07 के उत्तर का उपयोग करूंगा, क्या यह एक 'या' होना चाहिए? अगर सिर्फ पहला नाम बदल गया है, तो भी मैं – TrialAndError
@ परीक्षण और त्रुटि अपडेट करना चाहता हूं: हाँ, आप सही हैं। फिक्सिंग ... – a1ex07
मुझे लगता है कि यह पूरी तरह से काम करेगा। मुझे एहसास नहीं हुआ कि मैच किए गए हिस्से पर 'और' हो सकता है। धन्यवाद। – TrialAndError