কম্পিউটার

MySQL "অর্ডার বাই" এর ভিতরে "গ্রুপ বাই"? এটা কি সম্ভব?


GROUP BY-এর ভিতরে ORDER BY ব্যবহার করার পরিবর্তে, আপনি MAX() সমষ্টিগত ফাংশন ব্যবহার করতে পারেন৷

সিনট্যাক্স নিম্নরূপ -

SELECT yourNameColumnName,MAX(yourRankColumnName) FROM yourTableName
GROUP BY yourNameColumnName;

উপরের সিনট্যাক্স বুঝতে, আসুন একটি টেবিল তৈরি করি। একটি টেবিল তৈরি করার প্রশ্নটি নিম্নরূপ -

mysql> create table MaxDemo
   -> (
   -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> UserName varchar(20),
   -> UserRank int
   -> );
Query OK, 0 rows affected (0.77 sec)

সন্নিবেশ কমান্ড ব্যবহার করে টেবিলে কিছু রেকর্ড সন্নিবেশ করান। প্রশ্নটি নিম্নরূপ -

mysql> insert into MaxDemo(UserName,UserRank) values('Larry',2);
Query OK, 1 row affected (0.21 sec)
mysql> insert into MaxDemo(UserName,UserRank) values('Sam',1);
Query OK, 1 row affected (0.17 sec)
mysql> insert into MaxDemo(UserName,UserRank) values('Sam',2);
Query OK, 1 row affected (0.15 sec)

এখন আপনি একটি নির্বাচন বিবৃতি ব্যবহার করে টেবিল থেকে সমস্ত রেকর্ড প্রদর্শন করতে পারেন। প্রশ্নটি নিম্নরূপ -

mysql> select *from MaxDemo;

আউটপুট

+--------+----------+----------+
| UserId | UserName | UserRank |
+--------+----------+----------+
|      1 | Larry    |        2 |
|      2 | Sam      |        1 |
|      3 | Sam      |        2 |
+--------+----------+----------+
3 rows in set (0.00 sec)

আপনার ফলাফল −

পেতে MAX() ফাংশন ব্যবহার করার জন্য এখানে ক্যোয়ারী রয়েছে
mysql> select UserName,MAX(UserRank) from MaxDemo group by UserName;

আউটপুট

+----------+---------------+
| UserName | MAX(UserRank) |
+----------+---------------+
| Larry    |             2 |
| Sam      |             2 |
+----------+---------------+
2 rows in set (0.00 sec)

  1. MySQL ক্যোয়ারী NULL মান অনুসারে অর্ডার করতে

  2. কিভাবে একটি একক MySQL ক্যোয়ারীতে GROUP BY দিয়ে FIELD দ্বারা অর্ডার করবেন?

  3. আইডি দ্বারা স্বতন্ত্র গ্রুপ কনক্যাটে মাইএসকিউএল কোয়েরি?

  4. একাধিক আইডি দ্বারা MySQL ক্যোয়ারী অর্ডার করবেন?