使用 SQL 设置 table 中的列以匹配另一个 table 中的最高上下文值

Setting columns in a table to match highest contextual value in another table using SQL

我正在尝试借助 phpMyAdmin 中的 SQL 查询来修复我论坛的错误数据库。正在使用的列如下:

我想将每个用户的最后一篇文章的条目设置为 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 确保子查询中的临时 table 和 mybb_usersuid.

上匹配