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
我做错了什么
您不能在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)
这将使每个用户更新他们发布的最后一条消息的日期.
您希望执行子查询以获取用户"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子句仅为正确的用户执行此操作
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |