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

MySQL GROUP BY ক্লজ কীভাবে DISTINCT ক্লজের মত আচরণ করে?


SELECT স্টেটমেন্টে GROUP BY ক্লজ ব্যবহার করলে কিন্তু অ‍্যাগ্রিগেট ফাংশন ব্যবহার না করলে এটি DISTINCT ক্লজের মত আচরণ করে। উদাহরণস্বরূপ, নিচের টেবিলটি আছে:

mysql> Select * from testing; 
+------+---------+---------+
| id   | fname   | Lname   |
+------+---------+---------+
|  200 | Raman   | Kumar   |
|  201 | Sahil   | Bhalla  |
|  202 | Gaurav  | NULL    |
|  203 | Aarav   | NULL    |
|  204 | Harshit | Khurana |
|  205 | Rahul   | NULL    |
|  206 | Piyush  | Kohli   |
|  207 | Lovkesh | NULL    |
|  208 | Gaurav  | Kumar   |
|  209 | Raman  | Kumar    |
+------+---------+---------+
10 rows in set (0.00 sec)

'Lname' কলামে DISTINCT ক্লজ ব্যবহার করলে MySQL নিচের ফলাফল দেয়:

mysql> select Distinct LNAME from testing; 
+---------+
| LNAME   |
+---------+
| Kumar   |
| Bhalla  |
| NULL    |
| Khurana |
| Kohli   |
+---------+
5 rows in set (0.00 sec)

এখন GROUP BY ক্লজ নিচের মতো ব্যবহার করলে একই ফলাফল পাওয়া যায়:

mysql> Select LNAME from testing GROUP BY Lname; 
+---------+
| LNAME   |
+---------+
| NULL    |
| Bhalla  |
| Khurana |
| Kohli   |
| Kumar   |
+---------+
5 rows in set (0.04 sec)

দুটি ফলাফলের পার্থক্য হলো GROUP BY দিয়ে ফলাফল সর্টেড আসে, DISTINCT দিয়ে সর্টেড আসে না।


  1. MySQL LIKE ক্লজে ইউজার ভেরিয়েবল ব্যবহারের পদ্ধতি

  2. MySQL-এ ORDER BY LIKE প্যাটার্ন অনুযায়ী সর্ট করা (CASE WHEN)

  3. MySQL-এ গ্রুপ বাই করলে র‍্যান্ডম অর্ডারে ফলাফল পাওয়া

  4. MySQL-এ GROUP BY ক্লজে সাবকোয়েরি ব্যবহার করে প্রতিটি গ্রুপের প্রথম রো নির্বাচন করুন