SQL查询帮助?Sql新手问题

Tom*_*Tom 2 php mysql mysql-error-1111

我一直得到这个声明"无效使用组功能"

对于此查询

 mysql_query("UPDATE users SET users.lastmessage = MAX(messages.id) WHERE users.name ='tom'") 
or die(mysql_error());  
Run Code Online (Sandbox Code Playgroud)

我正在尝试做的是获取users表中的lastmessage字段并将其更新为messages表中名称= tom的最大id

我做错了什么

IAm*_*rey 5

您不能在GROUP BY语句之外使用MAX函数.您需要在UPDATE查询中执行SELECT语句才能正确获取此值.例如:

UPDATE users
SET users.lastmessage = (SELECT MAX(messages.id) AS m_id FROM messages WHERE messages.name = 'Tom')
WHERE users.name = 'Tom'
Run Code Online (Sandbox Code Playgroud)

但请注意,这只是有点限制,因为它只更新Tom.如果您想更新每个用户,您可以这样做:

UPDATE users
SET users.lastmessage = (SELECT MAX(messages.id) AS m_id FROM messages WHERE messages.name = users.name)
Run Code Online (Sandbox Code Playgroud)

这将使每个用户更新他们发布的最后一条消息的日期.


Leo*_*ons 5

您希望执行子查询以获取用户"tom"的最大Id,其操作如下:

UPDATE users 
   SET users.lastmessage = (SELECT MAX(id) FROM Messages WHERE messages.name = users.name) 
 WHERE users.Name = 'tom'
Run Code Online (Sandbox Code Playgroud)

编辑:WHERE子句仅为正确的用户执行此操作