২য় সর্বোচ্চ মান বের করতে রেকর্ডগুলো নিম্নক্রমে সাজিয়ে 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;