সর্বোচ্চ বয়স বের করতে MAX() এবং সেটি পাওয়া সব ইউজার বের করতে সাবকোয়েরি ব্যবহার করা হয়।
টেবিল তৈরি ও ডেটা ইনসার্ট
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);
ফলাফল (David ও Sam):
+-------+------+ | Name | Age | +-------+------+ | David | 55 | | Sam | 55 | +-------+------+ 2 rows in set (0.00 sec)
ব্যাখ্যা
SELECT MAX(Age) FROM DemoTable- সর্বোচ্চ বয়স (৫৫) রিটার্ন করে।- বাহ্যিক কোয়েরি সেই বয়স যারা পেয়েছে তাদের বের করে।
- সাবকোয়েরি একক মান (স্ক্যালার) রিটার্ন করতে হবে।
বিকল্প: 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+: Window Function
SELECT Name, Age FROM (
SELECT Name, Age, RANK() OVER (ORDER BY Age DESC) AS rnk FROM DemoTable
) t WHERE rnk = 1;
এটি টাই হ্যান্ডেল করে এবং আরও ফ্লেক্সিবল।