MySQL में एक या अधिक कॉलम के आधार पर डुप्लिकेट पंक्तियाँ खोजने के लिए सबक्वेरी के साथ HAVING क्लॉज का उपयोग करें।
टेबल निर्माण
mysql> CREATE TABLE DemoTable (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentFirstName VARCHAR(20),
StudentLastName VARCHAR(20)
);
डेटा डालना (John तीन बार आता है)
mysql> INSERT INTO DemoTable(StudentFirstName, StudentLastName) VALUES('John', 'Smith');
mysql> INSERT INTO DemoTable(StudentFirstName, StudentLastName) VALUES('Carol', 'Taylor');
mysql> INSERT INTO DemoTable(StudentFirstName, StudentLastName) VALUES('John', 'Doe');
mysql> INSERT INTO DemoTable(StudentFirstName, StudentLastName) VALUES('John', 'Brown');
mysql> INSERT INTO DemoTable(StudentFirstName, StudentLastName) VALUES('David', 'Miller');
सभी रिकॉर्ड देखें
mysql> SELECT * FROM DemoTable;
+-----------+------------------+-----------------+ | StudentId | StudentFirstName | StudentLastName | +-----------+------------------+-----------------+ | 1 | John | Smith | | 2 | Carol | Taylor | | 3 | John | Doe | | 4 | John | Brown | | 5 | David | Miller | +-----------+------------------+-----------------+ 5 rows in set (0.00 sec)
डुप्लिकेट FirstName वाली पंक्तियाँ चुनें
mysql> SELECT StudentId FROM DemoTable
WHERE StudentFirstName = (
SELECT StudentFirstName FROM DemoTable
HAVING COUNT(StudentFirstName) > 1
);
परिणाम (John के तीनों रिकॉर्ड)
+-----------+ | StudentId | +-----------+ | 1 | | 3 | | 4 | +-----------+ 3 rows in set (0.03 sec)
बेहतर तरीका (दो कॉलम के लिए):
SELECT * FROM DemoTable
WHERE (StudentFirstName, StudentLastName) IN (
SELECT StudentFirstName, StudentLastName
FROM DemoTable
GROUP BY StudentFirstName, StudentLastName
HAVING COUNT(*) > 1
);
यह संयोजन (कॉम्बिनेशन) के आधार पर डुप्लिकेट ढूंढता है।