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

Lấy dòng倒数第二 (thứ 2 từ cuối) trong MySQL

Cú pháp

SELECT * FROM bang ORDER BY cot_sap_xep DESC LIMIT 1, 1;
  • ORDER BY ... DESC: Sắp xếp ngược (cuối lên đầu)
  • LIMIT 1, 1: Bỏ 1 dòng đầu (dòng cuối), lấy 1 dòng tiếp theo
  • Cú pháp: LIMIT offset, row_count

Ví dụ: Bảng 11 dòng, lấy dòng thứ 10 (Id=10)

Dữ liệu

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | Larry       |
| ...       | ...         |
| 10        | Chris       |  -- Dòng thứ 2 từ cuối
| 11        | Ramit       |  -- Dòng cuối
+-----------+-------------+

Truy vấn

mysql> SELECT * FROM secondLastDemo ORDER BY StudentId DESC LIMIT 1, 1;

Kết quả

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 10        | Chris       |
+-----------+-------------+

Các biến thể

  • Dòng cuối: LIMIT 1 hoặc LIMIT 0, 1
  • Dòng thứ 3 từ cuối: LIMIT 2, 1
  • N dòng cuối: LIMIT N
  • N dòng từ cuối (bỏ M dòng cuối): LIMIT M, N

Lưu ý hiệu năng

  • Cần index trên cột ORDER BY
  • OFFSET lớn (LIMIT 1000000, 1) rất chậm → dùng keyset pagination
  • Với bảng lớn: WHERE id < (SELECT MAX(id) FROM bang) ORDER BY id DESC LIMIT 1