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

SQL सर्वर में डुप्लिकेट पंक्तियों को कैसे हटाएं?

मुझे सीटीई और ROW_NUMBER पसंद हैं चूंकि दोनों संयुक्त हमें यह देखने की अनुमति देते हैं कि कौन सी पंक्तियां हटाई गई हैं (या अपडेट की गई हैं), इसलिए बस DELETE FROM CTE... बदलें करने के लिए SELECT * FROM CTE :

WITH CTE AS(
   SELECT [col1], [col2], [col3], [col4], [col5], [col6], [col7],
       RN = ROW_NUMBER()OVER(PARTITION BY col1 ORDER BY col1)
   FROM dbo.Table1
)
DELETE FROM CTE WHERE RN > 1

डेमो (परिणाम अलग है; मुझे लगता है कि यह आपकी ओर से एक टाइपो के कारण है)

COL1    COL2    COL3    COL4    COL5    COL6    COL7
john    1        1       1       1       1       1
sally   2        2       2       2       2       2

यह उदाहरण एकल कॉलम col1 . द्वारा डुप्लिकेट निर्धारित करता है PARTITION BY col1 . के कारण . यदि आप एक से अधिक कॉलम शामिल करना चाहते हैं तो बस उन्हें PARTITION BY . में जोड़ें :

ROW_NUMBER()OVER(PARTITION BY Col1, Col2, ... ORDER BY OrderColumn)


  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 सर्वर (T-SQL) में एक स्ट्रिंग को किसी अन्य स्ट्रिंग से बदलें

  3. SQL सर्वर SP - IN सरणी सूची के लिए पैरामीटर पास करें?

  4. टी-एसक्यूएल के साथ डेटाबेस के संगतता स्तर को कैसे बदलें

  5. मल्टी-स्टेटमेंट टेबल वैल्यूड फंक्शन बनाम इनलाइन टेबल वैल्यूड फंक्शन