sql查询有帮助吗? SQL新手问题

| 我不断收到以下语句“组功能的无效使用” 对于此查询
 mysql_query(\"UPDATE users SET users.lastmessage = MAX(messages.id) WHERE users.name =\'tom\'\") 
or die(mysql_error());  
我想做的是获取users表中的lastmessage字段,并将其更新为message表中最大的id,其中name = tom 我做错了什么     
已邀请:
您要执行子查询以获取用户\'tom \'的最大ID,具体操作如下:
UPDATE users 
   SET users.lastmessage = (SELECT MAX(id) FROM Messages WHERE messages.name = users.name) 
 WHERE users.Name = \'tom\'
编辑:WHERE子句仅对正确的用户执行此操作     
您不能在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\'
但是请注意,这有点限制,因为它仅更新Tom。如果要更新每个用户,可以这样:
UPDATE users
SET users.lastmessage = (SELECT MAX(messages.id) AS m_id FROM messages WHERE messages.name = users.name)
这将为每个用户更新他们上次发布消息的日期。     
UPDATE users, 
 (SELECT MAX(messages.id) as max_message_id FROM messages JOIN users ON (users.user_id = messages.user_id) WHERE users.name LIKE \'Tom\') as mm 
 SET users.lastmessage = mm.max_message_id
 WHERE users.name = \'Tom\'
我不会说这是解决此问题的最佳方法,但是因为我对您的表结构了解甚少,所以这似乎可以满足您的要求。另外请记住,我还没有针对上述内容进行过测试,因此您需要使用自己的适当表格和字段进行更改。     

要回复问题请先登录注册