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

Cập nhật duy nhất 1 giá trị từ bảng MySQL với ORDER BY DESC và LIMIT

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).