Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

इस परिदृश्य में मुझे SQL मर्ज के 'मिलान' भाग की आवश्यकता क्यों है?

में कॉपी-इन-एसक्यूएल/16331659#16331659">जिस उत्तर से आपने टिप्पणियों में लिंक किया है , जैसा कि मैंने आशापूर्वक स्पष्ट किया है, हम दुरुपयोग कर रहे हैं मर्ज बयान।

आपके द्वारा यहां दिखाई गई क्वेरी को मामूली रूप से निम्न द्वारा प्रतिस्थापित किया जा सकता है:

insert into T(Col1) select Col1 from T where ID = 123

हालांकि, अगर आप OUTPUT खंड , और वह OUTPUT क्लॉज को नए डाले गए डेटा और दोनों को संदर्भित करने की आवश्यकता है स्रोत तालिका से डेटा, आपको INSERT . पर ऐसा खंड लिखने की अनुमति नहीं है बयान।

इसलिए, हम इसके बजाय MERGE . का उपयोग करते हैं बयान, लेकिन अपने इच्छित उद्देश्य के लिए नहीं। इसका पूरा उद्देश्य इसे INSERT . करने के लिए बाध्य करना है और हमारा OUTPUT लिखें खंड।

अगर हम MERGE के दस्तावेज़ों की जांच करते हैं , हम देखते हैं कि एकमात्र क्लॉज जिसमें हम INSERT . करने के लिए निर्दिष्ट कर सकते हैं में है जब मेल नहीं खाता [लक्ष्य द्वारा] खंड - दोनों में जब मिलान किया गया और जब स्रोत से मेल नहीं खाता खंड, हमारे लिए एकमात्र विकल्प अपडेट करें . हैं या हटाएं

इसलिए, हमें MERGE . लिखना होगा ऐसा कि मिलान हमेशा विफल रहता है - और ऐसा करने का सबसे आसान तरीका यह कहना है कि मिलान तब होना चाहिए जब 1 =0 - जो, उम्मीद है, कभी नहीं होगा।

चूंकि SQL सर्वर बूलियन लिटरल का समर्थन नहीं करता है




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संग्रहीत कार्यविधियों का उपयोग करके SQL Server 2008 डेटाबेस को पढ़ने/लिखने के लिए Excel 2010 का उपयोग करें

  2. आप किसी भी समय आधारित अंतराल के आधार पर समूह कैसे बनाते हैं?

  3. सिंगल रिटर्न वैल्यू के लिए टेबल वैल्यूड फंक्शन बनाम स्केलर वैल्यू फंक्शन

  4. एसक्यूएल सर्वर 2005 पर डेटाटाइम को अंतिम सम्मिलित/अद्यतन/हटाएं कैसे प्राप्त करें?

  5. SQL सर्वर में एक पहचान कॉलम का मूल बीज लौटाएं