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

Lấy hàng cuối cùng (last entry) trong bảng MySQL

Hai cách phổ biến: ORDER BY ... DESC LIMIT 1 hoặc dùng MAX() trên cột tăng dần (thường là khóa chính AUTO_INCREMENT).

Cách 1: ORDER BY ... DESC LIMIT 1 (đơn giản, linh hoạt)

SELECT * FROM ten_bang ORDER BY cot_sap_xep DESC LIMIT 1;

Cách 2: Dùng MAX() (hiệu năng tốt nếu có index)

SET @max_id = (SELECT MAX(cot_id) FROM ten_bang);
SELECT * FROM ten_bang WHERE cot_id = @max_id;

Ví dụ minh họa

Bảng lastEntryDemo (Id AUTO_INCREMENT):

INSERT INTO lastEntryDemo (Name, Age) VALUES
('Larry',24), ('John',21), ('David',22), ('Bob',25), ('Carol',29), ('Mike',23), ('Sam',20);

Cách 1: ORDER BY Name DESC LIMIT 1

SELECT * FROM lastEntryDemo ORDER BY Name DESC LIMIT 1;
+----+------+------+
| Id | Name | Age  |
+----+------+------+
|  7 | Sam  |   20 |
+----+------+------+

(Sắp xếp theo tên chữ cái, 'Sam' lớn nhất)

Cách 2: MAX(Id)

SET @MaxId = (SELECT MAX(Id) FROM lastEntryDemo);
SELECT * FROM lastEntryDemo WHERE Id = @MaxId;
+----+------+------+
| Id | Name | Age  |
+----+------+------+
|  7 | Sam  |   20 |
+----+------+------+

(Hàng insert cuối cùng có Id lớn nhất = 7)

Khuyến nghị:

  • Muốn hàng insert cuối: dùng MAX(Id) (nhanh, dùng index PK).
  • Muốn hàng "cuối" theo tiêu chí khác (ngày, tên...): dùng ORDER BY cot DESC LIMIT 1.
  • MySQL 8.0+: SELECT * FROM ten_bang ORDER BY cot DESC LIMIT 1 tối ưu tốt với index.