Sử dụng ORDER BY ... DESC kết hợp LIMIT 1, 1 (bỏ qua 1 hàng đầu, lấy 1 hàng tiếp theo).
Tạo bảng và dữ liệu
mysql> CREATE TABLE DemoTable(StudentScore INT); Query OK, 0 rows affected (0.56 sec) mysql> INSERT INTO DemoTable VALUES(89), (69), (97), (99); Query OK, 4 rows affected
Truy vấn giá trị lớn thứ 2
mysql> SELECT * FROM DemoTable ORDER BY StudentScore DESC LIMIT 1, 1;
Kết quả:
+--------------+ | StudentScore | +--------------+ | 97 | +--------------+
Giải thích LIMIT offset, count:
LIMIT 1, 1= offset 1 (bỏ 1 hàng đầu), count 1 (lấy 1 hàng)LIMIT 0, 1hoặcLIMIT 1= giá trị lớn nhấtLIMIT 2, 1= giá trị lớn thứ 3
⚠️ Vấn đề trùng giá trị: Nếu có nhiều hàng 99 điểm, cách này lấy hàng thứ 2 theo thứ tự sắp xếp (có thể cũng là 99). Để lấy giá trị phân biệt lớn thứ 2:
SELECT DISTINCT StudentScore FROM DemoTable ORDER BY StudentScore DESC LIMIT 1, 1;