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

标签 mysql sql phpbb

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

  • mybb_posts 是一个在每一行中存储单个帖子信息的表,而 mybb_users 是一个在每一行中存储单个用户信息的表。<
  • mybb_users.uid – 论坛用户的 ID
  • mybb_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_usersuid 上匹配。

关于mysql - 使用 SQL 设置表中的列以匹配另一个表中的最高上下文值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32884559/

相关文章:

html - 如何在 IE6 中修复导航

module - "Advertisement Management"在管理员面板中不可见

mysql - 为什么 SQL HAVING 条件中的 COUNT 没有计算出正确的值?

php - CPA 下载报价线索(php、javascript、html、sql)

mysql - 查找 "duplicate"记录涉及STI和父子关系的解决方法

SQLite:根据另一个表中设置的条件更新一列

php - 如何最好地更新 300,000 条记录并更改每条记录的密码

php - 改变div中的数据

php - 通过php连接数据库

php - 带有巨大表的嵌套 mysql 查询