সমস্যা
MAX() শুধু একটি মান দেয়। যদি সর্বোচ্চ মান একাধিক সারিতে থাকে, তবে সবগুলো সারি পেতে জয়েন বা সাবকোয়েরি লাগে।
সারণি ও ডেটা
mysql> create table DemoTable1389 (StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentMarks int); mysql> insert into DemoTable1389(StudentMarks) values(40),(40),(68),(78),(97),(97),(97);
কোয়েরি (JOIN পদ্ধতি)
mysql> select tbl.StudentId, tbl.StudentMarks
-> from DemoTable1389 tbl
-> join (select max(StudentMarks) as MaxMarks from DemoTable1389) tbl1
-> on tbl1.MaxMarks = tbl.StudentMarks;
ফলাফল
+-----------+--------------+ | StudentId | StudentMarks | +-----------+--------------+ | 5 | 97 | | 6 | 97 | | 7 | 97 | +-----------+--------------+
বিকল্প পদ্ধতি (MySQL 8.0+): উইন্ডো ফাংশন
SELECT StudentId, StudentMarks FROM ( SELECT *, RANK() OVER (ORDER BY StudentMarks DESC) as rnk FROM DemoTable1389 ) t WHERE rnk = 1;
উইন্ডো ফাংশন আরও ফ্লেক্সিবল এবং পঠনযোগ্য।