Kết hợp ORDER BY ... DESC và LIMIT 1 trong câu lệnh UPDATE để cập nhật hàng có giá trị lớn nhất.
Tạo bảng và dữ liệu
mysql> CREATE TABLE DemoTable(
StudentName VARCHAR(100),
StudentMarks INT
);
Query OK, 0 rows affected (0.54 sec)
mysql> INSERT INTO DemoTable VALUES
('Chris',45), ('Bob',78), ('Mike',34), ('Robert',67);
Query OK, 4 rows affected
Cập nhật tên của học sinh có điểm cao nhất
mysql> UPDATE DemoTable SET StudentName = 'Adam' ORDER BY StudentMarks DESC LIMIT 1; Query OK, 1 row affected (0.10 sec)
Kết quả (Bob 78 điểm → đổi thành Adam):
+-------------+--------------+ | StudentName | StudentMarks | +-------------+--------------+ | Chris | 45 | | Adam | 78 | | Mike | 34 | | Robert | 67 | +-------------+--------------+
⚠️ Lưu ý: Cú pháp ORDER BY ... LIMIT trong UPDATE là mở rộng của MySQL, không phải SQL chuẩn. Không hoạt động trên PostgreSQL, SQL Server, Oracle.
Cách chuẩn SQL: Dùng subquery: UPDATE DemoTable SET StudentName='Adam' WHERE StudentMarks = (SELECT MAX(StudentMarks) FROM DemoTable) (nhưng cập nhật tất cả hàng trùng max).