语法如下
update yourTableName set yourColumnName1=yourValue where yourColumnName2=yourValue order by yourIdColumnName DESC LIMIT 1;
为了理解上述语法,让我们创建一个表。创建表的查询如下
mysql> create table UpdateWithHighestDemo -> ( -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> UserStatus tinyint, -> UserRank int -> );
使用insert命令在表中插入一些记录。
查询如下
mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(1,78); mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(0,118); mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(1,223); mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(1,225); mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(0,227); mysql> insert into UpdateWithHighestDemo(UserStatus,UserRank) values(0,230);
使用select语句显示表中的所有记录。
查询如下
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)
这是要更新的查询列
mysql> update UpdateWithHighestDemo -> set UserStatus=1 where UserRank=230 order by UserId DESC LIMIT 1; Rows matched: 1 Changed: 1 Warnings: 0
让我们使用select语句检查并显示表中的记录。
查询如下
mysql> select *from UpdateWithHighestDemo;
以下是输出
+--------+------------+----------+ | 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)
现在,如果要使用最高ID更新,则ORDER BY子句很有用。在上面的示例输出中,最高的“ UserId” = 6,UserStatus为1。
让我们将UserStatus更新为0。
查询如下
mysql> update UpdateWithHighestDemo -> set UserStatus=0 order by UserId DESC LIMIT 1; Rows matched: 1 Changed: 1 Warnings: 0
使用select语句检查表中的记录。
查询如下
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)