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

Lấy bản ghi lớn thứ hai không dùng LIMIT trong MySQL

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.