我正在尝试借助 phpMyAdmin 中的 SQL 查询来修复我论坛的错误数据库。使用的列如下:
mybb_posts
是一个在每一行中存储单个帖子信息的表,而mybb_users
是一个在每一行中存储单个用户信息的表。<mybb_users.uid
– 论坛用户的 IDmybb_users.lastpost
– 用户最后发布的时间戳mybb_posts.uid
– 指哪个用户发帖mybb_posts.dateline
– 出现在帖子上的时间戳
我想将每个用户的最后一篇文章的条目设置为 uid 与用户的 uid 匹配的帖子的日期线条目的最大值。以我有限的 SQL 经验尽可能地表达这一点:
SET mybb_users.uid = MAX(mybb_posts.dateline WHERE mybb_posts.uid = mybb_users.uid)
我已经尝试了几次,包括那个可耻的显示,但都导致了错误。
最佳答案
我认为应该这样做:
UPDATE
mybb_users,
(SELECT uid, MAX(dateline) AS date FROM mybb_posts GROUP BY uid) AS lastposts
SET mybb_users.lastpost = lastposts.date
WHERE mybb_users.uid = lastposts.uid
那么这里发生了什么?子查询(第三行)为每个用户选择最大日期线(感谢 GROUP BY
)。 WHERE
确保子查询中的临时表和 mybb_users
在 uid
上匹配。
关于mysql - 使用 SQL 设置表中的列以匹配另一个表中的最高上下文值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32884559/