/ / डुप्लिकेट मान [डुप्लिकेट] - sql, sql- सर्वर के साथ पंक्तियाँ निकालें

डुप्लिकेट मानों के साथ पंक्तियां निकालें [डुप्लिकेट] - एसक्यूएल, एसक्यूएल-सर्वर

मुझे डुप्लीकेट पंक्तियों वाली तालिका को साफ़ करना है:

id: serial id
gid: group id
url: string <- this is the column that I have to cleanup

एक gid कई हो सकते हैं url मान:

id    gid   url
----  ----  ------------
1     12    www.gmail.com
2     12    www.some.com
3     12    www.some.com <-- duplicate
4     13    www.other.com
5     13    www.milfsome.com <-- not a duplicate

मैं पूरी तालिका के खिलाफ एक क्वेरी निष्पादित करना चाहता हूं और जहां सभी पंक्तियों को हटाना है gid तथा url डुप्लिकेट हैं उपरोक्त नमूने में, हटाने के बाद, मैं केवल 1, 2, 4 और 5 शेष रखना चाहता हूं।

उत्तर:

उत्तर № 1 के लिए 12
;WITH x AS
(
SELECT id, gid, url, rn = ROW_NUMBER() OVER
(PARTITION BY gid, url ORDER BY id)
FROM dbo.table
)
SELECT id,gid,url FROM x WHERE rn = 1 -- the rows you"ll keep
-- SELECT id,gid,url FROM x WHERE rn > 1 -- the rows you"ll delete
-- DELETE x WHERE rn > 1; -- do the delete

एक बार जब आप पहले चयन से खुश हो जाते हैं, जोउन पंक्तियों को इंगित करता है जिन्हें आप "बनाए रखेंगे, इसे हटा दें और दूसरे चयन पर टिप्पणी न करें। एक बार जब आप" इससे खुश हो जाते हैं, जो पंक्तियों को इंगित करता है जिसे आप हटा देंगे, इसे हटा दें और हटाएं पर टिप्पणी न करें

और यदि आप डेटा हटाना नहीं चाहते हैं, तो नीचे दी गई टिप्पणी की गई लाइनों को अनदेखा करें SELECT...


उत्तर № 2 के लिए 1
SELECT
MIN(id) AS id,
gid,
url
FROM yourTable
GROUP BY gid, url