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

MySQL-এ GROUP BY এবং HAVING দিয়ে ডুপ্লিকেট মান বাদ দেওয়া

MySQL-এ শুধু একবার চলে আসা (non-duplicate) মান বের করতে GROUP BY এবং HAVING COUNT(*) = 1 ব্যবহার করা হয়।

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

mysql> CREATE TABLE DemoTable (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Subject VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.70 sec)
mysql> INSERT INTO DemoTable(Subject) VALUES('MySQL');
mysql> INSERT INTO DemoTable(Subject) VALUES('MongoDB');
mysql> INSERT INTO DemoTable(Subject) VALUES('Java');
mysql> INSERT INTO DemoTable(Subject) VALUES('MongoDB');
mysql> INSERT INTO DemoTable(Subject) VALUES('C');
mysql> INSERT INTO DemoTable(Subject) VALUES('C++');
mysql> INSERT INTO DemoTable(Subject) VALUES('Java');
mysql> INSERT INTO DemoTable(Subject) VALUES('C');

সব রেকর্ড দেখানো

mysql> SELECT * FROM DemoTable;

আউটপুট

+----+---------+
| Id | Subject |
+----+---------+
| 1  | MySQL   |
| 2  | MongoDB |
| 3  | Java    |
| 4  | MongoDB |
| 5  | C       |
| 6  | C++     |
| 7  | Java    |
| 8  | C       |
+----+---------+
8 rows in set (0.00 sec)

শুধু অনন্য (unique) মান বের করা

mysql> SELECT Subject FROM DemoTable GROUP BY Subject HAVING COUNT(*) = 1;

আউটপুট

+---------+
| Subject |
+---------+
| MySQL   |
| C++     |
+---------+
2 rows in set (0.00 sec)

ব্যাখ্যা: GROUP BY Subject সমান Subject-वाले রোগুলো গ্রুপ করে। HAVING COUNT(*) = 1 শুধু সেই গ্রুপগুলো রাখে যারা একবার চলে এলো। MySQL এবং C++ একবার চলে এলো, বাকিগুলো ডুপ্লিকেট।

বিকল্প: SELECT DISTINCT Subject FROM DemoTable — এটি সব অনন্য মান দেখাবে (ডুপ্লিকেট সহ একবার করে), কিন্তু কোনো মান কতবার চলে এলো তা জানা যাবে না।

  1. MySQL UNIQUE ঘোষণা: ডুপ্লিকেট মান ইনসার্ট রোধ করার পদ্ধতি

  2. MySQL-এ CASE এবং SUM() ব্যবহার করে কলামের ভিন্ন মানগুলোর পৃথক গণনা করা

  3. MySQL-এ খালি মান (Empty String) NULL-এ রূপান্তর করা

  4. MySQL কোয়েরি দিয়ে একাধিক ন্যূনতম মান বের করা