কম্পিউটার টিউটোরিয়াল

MySQL-এ এক বা দুই কলামের ভিত্তিতে ডুপ্লিকেট রো সিলেক্ট করা

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 |
+------------------+-----+
  1. MySQL-এ LIMIT ও OFFSET ব্যবহার করে ব্যাচewise রো সিলেক্ট করা

  2. MySQL-এ নির্দিষ্ট কলাম ভ্যালু অনুযায়ী একাধিক রো ফেচ করা (WHERE ক্লজ)

  3. MySQL-এ UNION ALL ব্যবহার করে কলামগুলোকে রোয়ে রূপান্তর করা

  4. MySQL-এ MAX() এবং সাবকোয়েরি ব্যবহার করে দুটি কলামের যোগফলের সর্বোচ্চ মান বের করুন