MySQL-এ GROUP BY ও HAVING দিয়ে ডুপ্লিকেট খুঁজে বের করা
টেবিলে কোনো কলামে ডুপ্লিকেট মান আছে কিনা এবং সেগুলোর সংখ্যা বের করতে GROUP BY সাথে HAVING COUNT(*) > 1 ব্যবহার করা হয়।
সিনট্যাক্স
SELECT yourColumnName, COUNT(*) AS DuplicateCount FROM yourTableName GROUP BY yourColumnName HAVING DuplicateCount > 1;
উদাহরণ সহ ব্যাখ্যা
টেবিল তৈরি:
mysql> CREATE TABLE duplicateRecords (
-> ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ClientName VARCHAR(20)
-> );
ডেটা ইনসার্ট (ডুপ্লিকেট সহ):
mysql> INSERT INTO duplicateRecords(ClientName) VALUES('John');
mysql> INSERT INTO duplicateRecords(ClientName) VALUES('Carol');
mysql> INSERT INTO duplicateRecords(ClientName) VALUES('John');
mysql> INSERT INTO duplicateRecords(ClientName) VALUES('Sam');
mysql> INSERT INTO duplicateRecords(ClientName) VALUES('Sam');
mysql> INSERT INTO duplicateRecords(ClientName) VALUES('Bob');
mysql> INSERT INTO duplicateRecords(ClientName) VALUES('John');
mysql> INSERT INTO duplicateRecords(ClientName) VALUES('Sam');
সব ডেটা:
mysql> SELECT * FROM duplicateRecords;
+----------+------------+ | ClientId | ClientName | +----------+------------+ | 1 | John | | 2 | Carol | | 3 | John | | 4 | Sam | | 5 | Sam | | 6 | Bob | | 7 | John | | 8 | Sam | +----------+------------+
ডুপ্লিকেট ও কাউন্ট বের করি:
mysql> SELECT ClientName, COUNT(*) AS DuplicateRecord
-> FROM duplicateRecords
-> GROUP BY ClientName
-> HAVING DuplicateRecord > 1;
ফলাফল:
+------------+-----------------+ | ClientName | DuplicateRecord | +------------+-----------------+ | John | 3 | | Sam | 3 | +------------+-----------------+
টিপ: একাধিক কলাম কম্বাইন করে ডুপ্লিকেট চেক করতে GROUP BY col1, col2 ব্যবহার করুন।