आइए पहले एक टेबल बनाते हैं:
mysql> create table DemoTable (
Name varchar(100),
Age int );
Query OK, 0 rows affected (0.46 sec)
इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें:
mysql> insert into DemoTable values('Chris',23);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values('David',55);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('Bob',53);
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values('Mike',54);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable values('Sam',55);
Query OK, 1 row affected (0.18 sec)
सेलेक्ट स्टेटमेंट का उपयोग करके टेबल से सभी रिकॉर्ड प्रदर्शित करें:
mysql> select * from DemoTable;
यह निम्नलिखिक आउटपुट देगा:
+-------+------+ | Name | Age | +-------+------+ | Chris | 23 | | David | 55 | | Bob | 53 | | Mike | 54 | | Sam | 55 | +-------+------+ 5 rows in set (0.00 sec)
अधिकतम आयु वाले सभी उपयोगकर्ताओं का चयन करने की क्वेरी
mysql> select * from DemoTable where Age=(select max(Age) from DemoTable);
यह निम्नलिखिक आउटपुट देगा:
+-------+------+ | Name | Age | +-------+------+ | David | 55 | | Sam | 55 | +-------+------+ 2 rows in set (0.00 sec)
व्याख्या
SELECT MAX(Age) FROM DemoTableसबक्वेरी अधिकतम आयु (55) लौटाती है- बाहरी क्वेरी
WHERE Age = 55वाली पंक्तियाँ ढूंढती है - David और Sam दोनों की आयु 55 है, इसलिए दोनों लौटाए जाते हैं
- यह
JOINया विंडो फ़ंक्शन के बिना शीर्ष मान खोजने का मानक पैटर्न है
वैकल्पिक: JOIN का उपयोग
SELECT d1.* FROM DemoTable d1 JOIN (SELECT MAX(Age) AS max_age FROM DemoTable) d2 ON d1.Age = d2.max_age;
विंडो फ़ंक्शन (MySQL 8.0+)
SELECT Name, Age FROM ( SELECT Name, Age, RANK() OVER (ORDER BY Age DESC) as rnk FROM DemoTable ) t WHERE rnk = 1;