Sử dụng truy vấn con (subquery) với MAX() để tìm giá trị lớn thứ hai mà không cần LIMIT.
Ví dụ
Tạo bảng số liệu:
mysql> create table DemoTable ( Number int ); Query OK, 0 rows affected (0.66 sec)
mysql> insert into DemoTable values(78); mysql> insert into DemoTable values(67); mysql> insert into DemoTable values(92); mysql> insert into DemoTable values(98); mysql> insert into DemoTable values(88); mysql> insert into DemoTable values(86); mysql> insert into DemoTable values(89);
Dữ liệu: 78, 67, 92, 98, 88, 86, 89 (MAX = 98)
Truy vấn lớn thứ hai
mysql> SELECT MAX(Number) FROM DemoTable WHERE Number < (SELECT MAX(Number) FROM DemoTable);
+-------------+ | MAX(Number) | +-------------+ | 92 | +-------------+
Giải thích: Truy vấn con bên trong tìm MAX = 98. Truy vấn ngoài tìm MAX của các giá trị < 98, là 92.
Cách khác (MySQL 8.0+): Dùng Window Function ROW_NUMBER() OVER (ORDER BY Number DESC) rồi lọc rn = 2.