我正在尝试更新名称为John(John具有多个记录,但ID不同)的最新记录,但是我似乎处于绑定状态。我的查询出了什么问题?
John
UPDATE messages_tbl SET is_unread=1 WHERE ReceiveTime = (SELECT MAX(ReceiveTime) FROM messages_tbl WHERE name='John')
有没有更好的办法来做这样的事情?
您可以同时加入两者并根据条件执行更新。
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以获取最新条目。
WHERE
is_unread