प्राथमिक कुंजी या विशिष्ट पहचानकर्ता कॉलम को अनदेखा करते हुए निम्न उदाहरण MySQL में डुप्लिकेट पंक्तियों को हटा देता है।
उदाहरण डुप्लिकेट पंक्तियों को हटा देता है लेकिन एक रखता है। तो दो समान पंक्तियों के मामले में, यह उनमें से एक को हटा देता है और दूसरे को रखता है।
नमूना डेटा
मान लीजिए हमारे पास निम्न डेटा वाली एक तालिका है:
SELECT * FROM Dogs;
परिणाम:
+---------+-------------+------------+ | DogId | FirstName | LastName | |---------+-------------+------------| | 1 | Bark | Smith | | 2 | Bark | Smith | | 3 | Woof | Jones | | 4 | Ruff | Robinson | | 5 | Wag | Johnson | | 6 | Wag | Johnson | | 7 | Wag | Johnson | +---------+-------------+------------+
हम देख सकते हैं कि पहली दो पंक्तियाँ डुप्लिकेट हैं, और अंतिम तीन पंक्तियाँ डुप्लिकेट हैं।
डुप्लिकेट ढूंढें
सबसे पहले, यह देखने के लिए कि कितनी पंक्तियाँ डुप्लिकेट हैं, हमारी तालिका की जाँच करें:
SELECT
FirstName,
LastName,
COUNT(*) AS Count
FROM Dogs
GROUP BY FirstName, LastName
HAVING COUNT(*) > 1;
परिणाम:
+-----------+----------+-------+ | FirstName | LastName | Count | +-----------+----------+-------+ | Bark | Smith | 2 | | Wag | Johnson | 3 | +-----------+----------+-------+
हम देख सकते हैं कि बार्क स्मिथ के साथ दो पंक्तियाँ हैं, और वैग जॉनसन के साथ तीन पंक्तियाँ हैं।
हम तालिका को डी-डुप्लिकेट करेंगे ताकि इसमें प्रत्येक में से केवल एक ही शामिल हो।
डुप्लिकेट हटाएं
निम्नलिखित कोड को चलाने से उपरोक्त तालिका का भ्रम दूर हो जाता है:
DELETE d1 FROM Dogs d1
INNER JOIN Dogs d2
WHERE
d1.DogId < d2.DogId AND
d1.FirstName = d2.FirstName AND
d1.LastName = d2.LastName;
परिणाम:
Query OK, 3 rows affected (0.00 sec)
आइए देखें परिणाम:
SELECT * FROM Dogs;
परिणाम:
+-------+-----------+----------+ | DogId | FirstName | LastName | +-------+-----------+----------+ | 2 | Bark | Smith | | 3 | Woof | Jones | | 4 | Ruff | Robinson | | 7 | Wag | Johnson | +-------+-----------+----------+
हमने टेबल से डुप्लीकेट पंक्तियों को सफलतापूर्वक हटा दिया है।