Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Lấy giá trị lớn thứ 2 từ bảng điểm sinh viên trong MySQL

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, 1 hoặc LIMIT 1 = giá trị lớn nhất
  • LIMIT 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;