一尘不染

Mysql:最新记录的更新字段

sql

我正在尝试更新名称为JohnJohn具有多个记录,但ID不同)的最新记录,但是我似乎处于绑定状态。我的查询出了什么问题?

UPDATE messages_tbl SET is_unread=1
WHERE ReceiveTime = (SELECT MAX(ReceiveTime) FROM messages_tbl WHERE name='John')

有没有更好的办法来做这样的事情?


阅读 154

收藏
2021-05-16

共1个答案

一尘不染

您可以同时加入两者并根据条件执行更新。

UPDATE  messages a
        INNER JOIN
        (
            SELECT  name , MAX(ReceiveTime) max_time
            FROM    messages 
            GROUP   BY name 
        ) b ON  a.name = b.name AND
                a.ReceiveTime = b.max_time
SET     a.is_unread = 1
-- WHERE    a.name = 'John'

没有WHERE条件。它将全部更新该列is_unread以获取最新条目。

2021-05-16