Cú pháp như sau
update yourTableName set yourColumnName1=yourValue where yourColumnName2=yourValue order by yourIdColumnName DESC LIMIT 1;
Để hiểu cú pháp trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau
mysql> create table UpdateWithHighestDemo -> ( -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> UserStatus tinyint, -> UserRank int -> ); Query OK, 0 rows affected (0.61 sec)
Chèn một số bản ghi vào bảng bằng lệnh chèn.
Truy vấn như sau
mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(1,78); Query OK, 1 row affected (0.12 sec) mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(0,118); Query OK, 1 row affected (0.18 sec) mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(1,223); Query OK, 1 row affected (0.62 sec) mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(1,225); Query OK, 1 row affected (0.12 sec) mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(0,227); Query OK, 1 row affected (0.14 sec) mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(0,230); Query OK, 1 row affected (0.17 sec)
Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select.
Truy vấn như sau
mysql> select *from UpdateWithHighestDemo;
Sau đây là kết quả
+--------+------------+----------+ | UserId | UserStatus | UserRank | +--------+------------+----------+ | 1 | 1 | 78 | | 2 | 0 | 118 | | 3 | 1 | 223 | | 4 | 1 | 225 | | 5 | 0 | 227 | | 6 | 0 | 230 | +--------+------------+----------+ 6 rows in set (0.00 sec)
Đây là truy vấn để cập nhật cột
mysql> update UpdateWithHighestDemo -> set UserStatus=1 where UserRank=230 order by UserId DESC LIMIT 1; Query OK, 1 row affected (0.19 sec) Rows matched: 1 Changed: 1 Warnings: 0
Hãy để chúng tôi kiểm tra và hiển thị các bản ghi từ bảng bằng cách sử dụng câu lệnh select.
Truy vấn như sau
mysql> select *from UpdateWithHighestDemo;
Sau đây là kết quả
+--------+------------+----------+ | UserId | UserStatus | UserRank | +--------+------------+----------+ | 1 | 1 | 78 | | 2 | 0 | 118 | | 3 | 1 | 223 | | 4 | 1 | 225 | | 5 | 0 | 227 | | 6 | 1 | 230 | +--------+------------+----------+ 6 rows in set (0.00 sec)
Bây giờ nếu bạn muốn cập nhật với id cao nhất thì mệnh đề ORDER BY rất hữu ích. Trong kết quả mẫu ở trên, ‘UserId’ =6 cao nhất và UserStatus là 1.
Hãy để chúng tôi cập nhật UserStatus lên 0.
Truy vấn như sau
mysql> update UpdateWithHighestDemo -> set UserStatus=0 order by UserId DESC LIMIT 1; Query OK, 1 row affected (0.18 sec) Rows matched: 1 Changed: 1 Warnings: 0
Kiểm tra các bản ghi từ bảng bằng cách sử dụng câu lệnh select.
Truy vấn như sau
mysql> select *from UpdateWithHighestDemo; +--------+------------+----------+ | UserId | UserStatus | UserRank | +--------+------------+----------+ | 1 | 1 | 78 | | 2 | 0 | 118 | | 3 | 1 | 223 | | 4 | 1 | 225 | | 5 | 0 | 227 | | 6 | 0 | 230 | +--------+------------+----------+ 6 rows in set (0.00 sec)