निम्न उदाहरण SQL सर्वर में डुप्लिकेट पंक्तियों को हटाने के लिए T-SQL का उपयोग करता है।
अधिक विशिष्ट होने के लिए, यह डुप्लिकेट पंक्तियों को हटा देता है लेकिन एक रखता है। तो यदि आपके पास दो समान पंक्तियां हैं, तो यह उनमें से एक को हटा देती है और दूसरी को रखती है। दूसरे शब्दों में, यह तालिका को धोखा देता है।
नमूना डेटा
मान लीजिए हमारे पास निम्न डेटा वाली एक तालिका है:
SELECT * FROM Pets;
परिणाम:
+---------+-----------+-----------+ | PetId | PetName | PetType | |---------+-----------+-----------| | 1 | Wag | Dog | | 1 | Wag | Dog | | 2 | Scratch | Cat | | 3 | Tweet | Bird | | 4 | Bark | Dog | | 4 | Bark | Dog | | 4 | Bark | Dog | +---------+-----------+-----------+
हम देख सकते हैं कि पहली दो पंक्तियाँ डुप्लीकेट हैं, जैसा कि अंतिम तीन पंक्तियाँ हैं।
डुप्लिकेट चुनें
तालिका को डी-डुप्लिकेट करने से पहले, हम निम्न क्वेरी का उपयोग करके देख सकते हैं कि कौन सी पंक्ति/पंक्तियों को हटा दिया जाएगा:
WITH CTE AS
(
SELECT
*,
ROW_NUMBER() OVER (
PARTITION BY PetId, PetName, PetType
ORDER BY PetId, PetName, PetType
) AS Row_Number
FROM Pets
)
SELECT * FROM CTE WHERE Row_Number <> 1;
परिणाम:
+---------+-----------+-----------+--------------+ | PetId | PetName | PetType | Row_Number | |---------+-----------+-----------+--------------| | 1 | Wag | Dog | 2 | | 4 | Bark | Dog | 2 | | 4 | Bark | Dog | 3 | +---------+-----------+-----------+--------------+
डुप्लिकेट हटाएं
डुप्लिकेट मानों को हटाने के लिए, हम SELECT *
. को बदलकर उपरोक्त क्वेरी को संशोधित कर सकते हैं अंतिम पंक्ति पर DELETE
. के साथ :
WITH CTE AS
(
SELECT
*,
ROW_NUMBER() OVER (
PARTITION BY PetId, PetName, PetType
ORDER BY PetId, PetName, PetType
) AS Row_Number
FROM Pets
)
DELETE FROM CTE WHERE Row_Number <> 1;
परिणाम:
(3 rows affected)
तालिका को अब डी-डुप्लिकेट कर दिया गया है।
हम सभी पंक्तियों को फिर से चुनकर इसे सत्यापित कर सकते हैं:
SELECT * FROM Pets;
परिणाम:
+---------+-----------+-----------+ | PetId | PetName | PetType | |---------+-----------+-----------| | 1 | Wag | Dog | | 2 | Scratch | Cat | | 3 | Tweet | Bird | | 4 | Bark | Dog | +---------+-----------+-----------+
जैसा कि अपेक्षित था, हमारे कुत्ते "वाग" के लिए डुप्लिकेट पंक्तियों में से एक को हटा दिया गया है और दूसरा बना हुआ है। "बार्क" के लिए दो डुप्लिकेट पंक्तियों को भी हटा दिया गया है। तालिका को सफलतापूर्वक डी-डुप्लिकेट कर दिया गया है।