我试图更新名称为John
(John
有多个记录但ID不同)的最新记录,但我似乎处于绑定状态。我的查询有什么问题?Mysql:更新最新记录的字段
UPDATE messages_tbl SET is_unread=1
WHERE ReceiveTime = (SELECT MAX(ReceiveTime) FROM messages_tbl WHERE name='John')
有没有更好的方法来做这样的事情?
我试图更新名称为John
(John
有多个记录但ID不同)的最新记录,但我似乎处于绑定状态。我的查询有什么问题?Mysql:更新最新记录的字段
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
的最新条目。
对不起,我收到了'错误代码:1064'。 – enchance
什么是完整的错误信息? –
查询:更新消息s1 set is_unread = 1内部连接(SELECT Name,MAX(ReceiveTime)max_time FROM messages group by Messa ... 错误代码:1064 您的SQL语法错误;请检查对应的手册到您的MySQL服务器版本的正确的语法使用附近的'内部连接(SELECT名称,MAX(ReceiveTime)max_time FROM消息组'在第2行' – enchance