使用 SQL 设置 table 中的列以匹配另一个 table 中的最高上下文值
Setting columns in a table to match highest contextual value in another table using SQL
我正在尝试借助 phpMyAdmin 中的 SQL 查询来修复我论坛的错误数据库。正在使用的列如下:
mybb_posts
是一个 table,它在每行中存储单个 Post 的信息,而 mybb_users
是一个 table,它存储每行中单个 Post 的信息每行一个用户。
mybb_users.uid
– 论坛用户ID
mybb_users.lastpost
– 用户最后 Post 的时间戳
mybb_posts.uid
– 指的是哪个用户做出了 Post
mybb_posts.dateline
– Post 上出现的时间戳
我想将每个用户的最后一篇文章的条目设置为 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_users
在 uid
.
上匹配
我正在尝试借助 phpMyAdmin 中的 SQL 查询来修复我论坛的错误数据库。正在使用的列如下:
mybb_posts
是一个 table,它在每行中存储单个 Post 的信息,而mybb_users
是一个 table,它存储每行中单个 Post 的信息每行一个用户。mybb_users.uid
– 论坛用户IDmybb_users.lastpost
– 用户最后 Post 的时间戳mybb_posts.uid
– 指的是哪个用户做出了 Postmybb_posts.dateline
– Post 上出现的时间戳
我想将每个用户的最后一篇文章的条目设置为 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_users
在 uid
.