सेल्फ-जॉइन (Self-Join) का उपयोग करके एक टेबल में डुप्लिकेट मान वाली पंक्तियाँ पहचानी जा सकती हैं।
उदाहरण: stock_item टेबल
mysql> SELECT * FROM stock_item;
+------------+----------+
| item_name | quantity |
+------------+----------+
| Calculator | 89 |
| Notebooks | 40 |
| Pencil | 40 |
| Pens | 32 |
| Shirts | 29 |
| Shoes | 29 |
| Trousers | 29 |
+------------+----------+
यहां quantity कॉलम में डुप्लिकेट हैं: 40 (Notebooks, Pencil) और 29 (Shirts, Shoes, Trousers)।
डुप्लिकेट खोजने की क्वेरी
mysql> SELECT DISTINCT g.item_name, g.quantity
FROM stock_item g
INNER JOIN stock_item b ON g.quantity = b.quantity
WHERE g.item_name <> b.item_name;
परिणाम
+-----------+----------+
| item_name | quantity |
+-----------+----------+
| Pencil | 40 |
| Notebooks | 40 |
| Shoes | 29 |
| Trousers | 29 |
| Shirts | 29 |
+-----------+----------+
व्याख्या
- टेबल को स्वयं से
quantityपर जोड़ा जाता है (gऔरbएलियास)। WHERE g.item_name <> b.item_nameसुनिश्चित करता है कि वही पंक्ति स्वयं से न जुड़े।DISTINCTदोहराव हटाता है (प्रत्येक जोड़ा दो बार मिलता है: A-B और B-A)।
बेहतर विकल्प: GROUP BY + HAVING
SELECT quantity, COUNT(*) as cnt, GROUP_CONCAT(item_name) as items
FROM stock_item
GROUP BY quantity
HAVING COUNT(*) > 1;
यह अधिक कुशल है और डुप्लिकेट मान, उनकी संख्या और संबंधित आइटम नाम एक साथ दिखाता है।