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

संदेश 8672, स्तर 16, राज्य 1, पंक्ति 1 MERGE कथन ने एक ही पंक्ति को एक से अधिक बार अद्यतन या हटाने का प्रयास किया

ऐसा तब होता है जब एक लक्ष्य पंक्ति एक से अधिक स्रोत पंक्ति से मेल खाती है।
एक MERGE कथन लक्ष्य तालिका की एक ही पंक्ति को कई बार अद्यतन/हटा नहीं सकता है।

मुझे लगता है कि त्रुटि बहुत आत्म-व्याख्यात्मक है।

आपके पास स्रोत तालिका में डुप्लिकेट पंक्तियाँ हैं। तो Rownumber = X . के साथ एक पंक्ति के लिए Rows . में तालिका में Rowno = X . के साथ एक से अधिक पंक्तियाँ हैं Temp_info . में टेबल।

SQL सर्वर यह जानना चाहता है कि लक्ष्य तालिका में एक पंक्ति पर अद्यतन के लिए स्रोत तालिका में उन डुप्लिकेट पंक्तियों में से कौन सी पंक्ति का उपयोग करना है।

[संपादित करें]

आपके उत्तर के जवाब में:मर्ज चलाने से पहले विकल्पों में से एक डुप्लिकेट करना है:

with cte
as
(
    select row_number() over(partition by RowNo order by DOB desc) RowNumber
    from Temp_info
)
delete cte
where RowNumber > 1

मैंने DOB . का इस्तेमाल किया उस क्षेत्र के रूप में जो यह जानने के लिए आदेश को परिभाषित करता है कि अंतिम क्या है। इस फ़ील्ड को उस फ़ील्ड से बदलें जिसे आप ऑर्डर के लिए उपयोग करना चाहते हैं।




  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 सर्वर प्रतिकृति को सर्वर से कनेक्शन बनाने के लिए वास्तविक सर्वर नाम की आवश्यकता होती है

  2. SQL सर्वर:तालिका में पंक्तियों की अधिकतम संख्या

  3. टी-एसक्यूएल में पिवट डेटा

  4. SQL सर्वर TRIM, LTRIM, और RTRIM फ़ंक्शन

  5. SQL सर्वर में स्थिति के आधार पर गणना करें