MySQL-এ এক বা একাধিক কলামের ভিত্তিতে ডুপ্লিকেট রোগুলো খুঁজে বের করতে সাবকোয়েরি এবং HAVING ক্লজ ব্যবহার করা হয়।
টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> CREATE TABLE DemoTable (
-> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentFirstName VARCHAR(20),
-> StudentLastName VARCHAR(20)
-> );
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 |
+-----------+------------------+-----------------+
StudentFirstName কলামে ডুপ্লিকেট খুঁজে বের করা
mysql> SELECT StudentId FROM DemoTable
-> WHERE StudentFirstName = (
-> SELECT StudentFirstName FROM DemoTable
-> HAVING COUNT(StudentFirstName) > 1
-> );
ফলাফল
+-----------+
| StudentId |
+-----------+
| 1 |
| 3 |
| 4 |
+-----------+
ব্যাখ্যা: 'John' নামটি ৩ বার এসেছে (Id: 1, 3, 4), তাই এই তিনটি রো ডুপ্লিকেট হিসেবে ফেরত আয়েছে।
উন্নত পদ্ধতি (দুই কলামের কম্বিনেশন দিয়ে)
SELECT StudentId, StudentFirstName, StudentLastName
FROM DemoTable
WHERE (StudentFirstName, StudentLastName) IN (
SELECT StudentFirstName, StudentLastName
FROM DemoTable
GROUP BY StudentFirstName, StudentLastName
HAVING COUNT(*) > 1
);
শুধু ডুপ্লিকেট কাউন্ট দেখতে (GROUP BY + HAVING)
mysql> SELECT StudentFirstName, COUNT(*) as cnt
-> FROM DemoTable
-> GROUP BY StudentFirstName
-> HAVING COUNT(*) > 1;
+------------------+-----+
| StudentFirstName | cnt |
+------------------+-----+
| John | 3 |
+------------------+-----+