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

MySQL-এ GROUP BY HAVING এবং সাবকুয়েরি ব্যবহার করে ডুপ্লিকেট রো বের করা


টেবিল তৈরি এবং ডেটা ইনসার্ট

mysql> create table DemoTable1861 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20), Marks int ); Query OK, 0 rows affected (0.00 sec)
mysql> insert into DemoTable1861(Name,Marks) values('John',45); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1861(Name,Marks) values('Chris',74); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1861(Name,Marks) values('David',89); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1861(Name,Marks) values('Chris',74); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1861(Name,Marks) values('John',49); Query OK, 1 row affected (0.00 sec)

সব রেকর্ড

mysql> select * from DemoTable1861;
+----+-------+-------+
| Id | Name  | Marks |
+----+-------+-------+
|  1 | John  |    45 |
|  2 | Chris |    74 |
|  3 | David |    89 |
|  4 | Chris |    74 |
|  5 | John  |    49 |
+----+-------+-------+
5 rows in set (0.00 sec)

Name এবং Marks দুটি কলাম মিলে ডুপ্লিকেট সারি বের করা

সাবকুয়েরি দিয়ে (Name, Marks) জোড়ার কাউন্ট > ১ হলে সিলেক্ট করি:

mysql> select Id,Name,Marks from DemoTable1861 where (Name,Marks) IN ( select Name,Marks from DemoTable1861 group by Name,Marks having count(*) > 1);
+----+-------+-------+
| Id | Name  | Marks |
+----+-------+-------+
|  2 | Chris |    74 |
|  4 | Chris |    74 |
+----+-------+-------+
2 rows in set (0.00 sec)

ব্যাখ্যা: ROW CONSTRUCTOR (Name, Marks) IN (...) সিনট্যাক্স MySQL-এ সমর্থিত। এটি একাধিক কলামের কম্বিনেশন ডুপ্লিকেট খুঁজে বের করার সুন্দর পদ্ধতি।

  1. MySQL-এ নির্দিষ্ট কলাম নামে টেবিল খুঁজে বের করা

  2. MySQL-এ COLLATE দিয়ে সঠিক স্ট্রিং মান খুঁজে বের করা

  3. MySQL-এ GREATEST() ফাংশন ব্যবহার করে একাধিক কলামে NULL আছে কিনা যাচাই করা

  4. MySQL-এ বিশেষ ক্যারেক্টারযুক্ত মান খুঁজে NULL দিয়ে প্রতিস্থাপন করা