Cú pháp
UPDATE bang SET cot = gia_tri WHERE dieu_kien ORDER BY cot_id DESC LIMIT 1;
Ví dụ: Cập nhật UserStatus = 1 cho bản ghi UserRank=230 có UserId lớn nhất
Dữ liệu ban đầu
+--------+------------+----------+ | UserId | UserStatus | UserRank | +--------+------------+----------+ | 1 | 1 | 78 | | 2 | 0 | 118 | | 3 | 1 | 223 | | 4 | 1 | 225 | | 5 | 0 | 227 | | 6 | 0 | 230 | -- UserId lớn nhất có Rank=230 +--------+------------+----------+
Truy vấn 1: Có điều kiện WHERE
mysql> UPDATE UpdateWithHighestDemo
-> SET UserStatus = 1
-> WHERE UserRank = 230
-> ORDER BY UserId DESC LIMIT 1;
Kết quả
+--------+------------+----------+ | UserId | UserStatus | UserRank | +--------+------------+----------+ | 6 | 1 | 230 | -- Đã cập nhật +--------+------------+----------+
Truy vấn 2: Chỉ ORDER BY + LIMIT (cập nhật dòng cuối bảng)
mysql> UPDATE UpdateWithHighestDemo
-> SET UserStatus = 0
-> ORDER BY UserId DESC LIMIT 1;
Kết quả
+--------+------------+----------+ | UserId | UserStatus | UserRank | +--------+------------+----------+ | 6 | 0 | 230 | -- Dòng cuối bị cập nhật +--------+------------+----------+
Lưu ý quan trọng
ORDER BY ... LIMITtrong UPDATE: Hỗ trợ từ MySQL 4.0+- Không dùng được trong UPDATE multi-table
- Kết hợp WHERE + ORDER BY + LIMIT: WHERE lọc trước, ORDER BY sắp xếp kết quả lọc, LIMIT lấy N dòng đầu
Ứng dụng: Xử lý hàng đợi (queue), lấy task mới nhất, cập nhật log gần nhất.