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

टी-एसक्यूएल:सभी डुप्लिकेट पंक्तियों को हटाना लेकिन एक रखना

आपने यह नहीं बताया कि आप किस संस्करण का उपयोग कर रहे थे, लेकिन SQL 2005 और इसके बाद के संस्करण में, आप ओवर क्लॉज के साथ एक सामान्य तालिका अभिव्यक्ति का उपयोग कर सकते हैं। यह कुछ इस तरह है:

WITH cte AS (
  SELECT[foo], [bar], 
     row_number() OVER(PARTITION BY foo, bar ORDER BY baz) AS [rn]
  FROM TABLE
)
DELETE cte WHERE [rn] > 1

इसके साथ खेलें और देखें कि आपको क्या मिलता है।

(संपादित करें:सहायक होने के प्रयास में, किसी ने ORDER BY संपादित किया सीटीई के भीतर खंड। स्पष्ट होने के लिए, आप यहां अपनी इच्छानुसार कुछ भी ऑर्डर कर सकते हैं, यह सीटीई द्वारा लौटाए गए कॉलम में से एक नहीं होना चाहिए। वास्तव में, यहां एक सामान्य उपयोग-मामला यह है कि "फू, बार" समूह पहचानकर्ता हैं और "बाज" किसी प्रकार का समय टिकट है। नवीनतम रखने के लिए, आपको ORDER BY baz desc )



  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 सर्वर 2005 का उपयोग करके मैं अल्पविराम से अलग किए गए मानों को अलग-अलग पंक्तियों में कैसे विस्तारित करूं?

  2. SQL सर्वर में कोई ऑब्जेक्ट एक दृश्य है या नहीं यह निर्धारित करने के लिए OBJECTPROPERTY() का उपयोग करें

  3. SQL सर्वर:sp_who2 का आउटपुट फ़िल्टर करें

  4. JSON ऑटो उदाहरणों के लिए SQL सर्वर (T-SQL)

  5. विशिष्ट अभिलेखों पर PIVOT क्वेरी