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

MySQL-এ ORDER BY DESC LIMIT 1,1 ব্যবহার করে ২য় সর্বোচ্চ মান বের করা

২য় সর্বোচ্চ মান বের করতে রেকর্ডগুলো নিম্নক্রমে সাজিয়ে LIMIT 1, 1 (অফসেট ১, লিমিট ১) ব্যবহার করা হয়।

টেবিল তৈরি ও ডেটা ইনসার্ট

mysql> CREATE TABLE DemoTable (StudentScore INT);
Query OK, 0 rows affected (0.56 sec)
mysql> INSERT INTO DemoTable VALUES (89);
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable VALUES (69);
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable VALUES (97);
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable VALUES (99);
Query OK, 1 row affected (0.12 sec)

রেকর্ড দেখানো

mysql> SELECT * FROM DemoTable;

আউটপুট:

+--------------+
| StudentScore |
+--------------+
| 89           |
| 69           |
| 97           |
| 99           |
+--------------+
4 rows in set (0.00 sec)

২য় সর্বোচ্চ মান বের করা

mysql> SELECT * FROM DemoTable ORDER BY StudentScore DESC LIMIT 1, 1;

ফলাফল (৯৯ প্রথমে, ৯৭ দ্বিতীয়):

+--------------+
| StudentScore |
+--------------+
| 97           |
+--------------+
1 row in set (0.00 sec)

LIMIT সিনট্যাক্স

  • LIMIT n - প্রথম n রো।
  • LIMIT offset, n - offset সংখ্যক রো বাদ দিয়ে পরের n রো।
  • LIMIT n OFFSET offset - সমতুল্য (STANDARD SQL)۔

টাই (Duplicate Max) হ্যান্ডলিং

যদি সর্বোচ্চ মান একাধিকবার থাকে (যেমন ৯৯, ৯৯, ৯৭), তবে উপরের কোয়েরি ৯৯ রিটার্ন করবে (২য় রো)। অলগ আলাদা ২য় সর্বোচ্চ (৯৭) পেতে:

SELECT MAX(StudentScore) FROM DemoTable 
WHERE StudentScore < (SELECT MAX(StudentScore) FROM DemoTable);

MySQL 8.0+: DENSE_RANK()

SELECT StudentScore FROM (
    SELECT StudentScore, DENSE_RANK() OVER (ORDER BY StudentScore DESC) AS dr
    FROM DemoTable
) t WHERE dr = 2 LIMIT 1;
  1. MySQL-এ বর্তমান AUTO_INCREMENT মান জানার উপায়

  2. MySQL-এ টেবিল কলামের ডেটা টাইপ জানা (INFORMATION_SCHEMA.COLUMNS)

  3. MySQL-এ সাবকোয়েরি দিয়ে 세컨্ড লাস্ট (২য় শেষ) রেকর্ড বের করা

  4. Java দিয়ে MySQL ডেটাবেস থেকে লাস্ট রেকর্ড পাওয়া