समाधान
INNER JOIN के साथ DELETE का उपयोग करके डुप्लिकेट पंक्तियाँ हटाएं (नवीनतम ID रखें)।
सिंटैक्स
DELETE tbl1 FROM yourTableName tbl1 INNER JOIN yourTableName tbl2 WHERE tbl1.id < tbl2.id AND tbl1.name = tbl2.name;
उदाहरण
टेबल बनाएं:
mysql> CREATE TABLE demo14 (
-> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> name VARCHAR(30)
-> );
mysql> INSERT INTO demo14 (name) VALUES ('John'), ('David'), ('David'), ('Bob'), ('John'), ('Carol');
हटाने से पहले
+----+-------+ | id | name | +----+-------+ | 1 | John | | 2 | David | | 3 | David | | 4 | Bob | | 5 | John | | 6 | Carol | +----+-------+
डिलीट क्वेरी
mysql> DELETE tbl1 FROM demo14 tbl1
-> INNER JOIN demo14 tbl2
-> WHERE tbl1.id < tbl2.id AND tbl1.name = tbl2.name;
हटाने के बाद
+----+-------+ | id | name | +----+-------+ | 3 | David | | 4 | Bob | | 5 | John | | 6 | Carol | +----+-------+
तर्क: सेल्फ-जOIN में tbl1.id < tbl2.id यह सुनिश्चित करता है कि प्रत्येक डुप्लिकेट जोड़ी के लिए केवल पुरानी पंक्ति (कम ID) हटाई जाती है, नवीनतम बनी रहती है।