JOIN और सबक्वेरी का उपयोग करके डुप्लिकेट सहित सभी अधिकतम मान प्राप्त करना
इसके लिए JOIN अवधारणा का उपयोग करें। पहले टेबल बनाएं:
mysql> create table DemoTable1389 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentMarks int ); Query OK, 0 rows affected (2.73 sec)
रिकॉर्ड डालें (यहां डुप्लिकेट मान भी डाले गए हैं):
mysql> insert into DemoTable1389(StudentMarks) values(40); Query OK, 1 row affected (0.26 sec) mysql> insert into DemoTable1389(StudentMarks) values(40); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable1389(StudentMarks) values(68); Query OK, 1 row affected (0.25 sec) mysql> insert into DemoTable1389(StudentMarks) values(78); Query OK, 1 row affected (0.43 sec) mysql> insert into DemoTable1389(StudentMarks) values(97); Query OK, 1 row affected (0.23 sec) mysql> insert into DemoTable1389(StudentMarks) values(97); Query OK, 1 row affected (0.08 sec) mysql> insert into DemoTable1389(StudentMarks) values(97); Query OK, 1 row affected (0.49 sec)
सभी रिकॉर्ड देखें:
mysql> select * from DemoTable1389;
आउटपुट:
+-----------+--------------+ | StudentId | StudentMarks | +-----------+--------------+ | 1 | 40 | | 2 | 40 | | 3 | 68 | | 4 | 78 | | 5 | 97 | | 6 | 97 | | 7 | 97 | +-----------+--------------+ 7 rows in set (0.00 sec)
एकाधिक अधिकतम मान चुनने की क्वेरी:
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 | +-----------+--------------+ 3 rows in set (0.00 sec)
व्याख्या: सबक्वेरी (SELECT MAX(StudentMarks) FROM DemoTable1389) अधिकतम मान (97) ढूंढती है। मुख्य क्वेरी इस मान के साथ JOIN करके उन सभी पंक्तियों को लौटाती है जिनका StudentMarks 97 है, डुप्लिकेट सहित। यह केवल एक पंक्ति लौटाने वाले LIMIT 1 या GROUP BY दृष्टिकोण से अलग है।