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 — এটি সব অনন্য মান দেখাবে (ডুপ্লিকেট সহ একবার করে), কিন্তু কোনো মান কতবার চলে এলো তা জানা যাবে না।