কম্পিউটার টিউটোরিয়াল

MySQL-এ সাবকোয়েরি ব্যবহার করে সর্বোচ্চ বয়স পাওয়া সব ইউজার বের করা

সর্বোচ্চ বয়স বের করতে 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;

এটি টাই হ্যান্ডেল করে এবং আরও ফ্লেক্সিবল।

  1. MySQL-এ একক INSERT কুয়েরিতে কমা দিয়ে একাধিক সারি ইনসার্ট করা

  2. MySQL-এ ENUM ফিল্ড ব্যবহার করে রো সিলেক্ট করা

  3. MySQL에서 NULL 또는 비NULL 여부로 전체 컬럼 업데이트하기

  4. MySQL SLES রিপোজিটরি দিয়ে MySQL আপগ্রেড