mysql从另一个表填充列的最大值

mysql从另一个表填充列的最大值,mysql,sql,database,Mysql,Sql,Database,假设我有两张桌子: 论坛帖子: id topicId text createTime ==================================== 110 7 'blah blah' 111 111 7 'blah blah' 222 112 7 'blah blah' 333 113 9 'blah blah' 444 论坛主题: id topicCloseTime ==================

假设我有两张桌子:

论坛帖子:

id  topicId  text        createTime
====================================
110   7     'blah blah'  111
111   7     'blah blah'  222
112   7     'blah blah'  333
113   9     'blah blah'  444
论坛主题:

id  topicCloseTime
==================
7   ????
8   ????

我想用论坛主题中所有帖子的最大createTime来填充论坛主题中的,我的意思是,在所有具有相同主题id的行中,论坛帖子中createTime的最大值,例如id:7将是333。这怎么可能?tnx

您可以将UPDATE与相关子查询一起使用。语法可能错误。请尝试一下:

更新forumtopic ft 设置ft.topicCloseTime=选择MAXfp.createTime 来自forumpost fp 其中fp.topicId=ft.Id
我将通过加入更新来处理此问题:

UPDATE forumtopic ft
INNER JOIN
(
    SELECT topicId, MAX(createTime) AS maxct
    FROM forumpost
    GROUP BY topicId
) fp
    ON ft.id = fp.topicId
SET
    ft.topicCloseTime = fp.maxct;

将表连接到返回每个topicId的最大createTime的查询:

看。 结果:


它遇到了以下错误:SQL错误1136:列计数与第1行的值计数不匹配您可以在论坛帖子操作INSERT/UPDATE/DELETE上使用触发器,但是,可能只有我,拥有一个主题CloseTime意味着一个主题已关闭,不能再发表帖子。它显示了此错误,我缺少什么?SQL错误1136:第1行的列计数与值计数不匹配这是一条UPDATE语句。您正在尝试插入吗?它向我显示此错误:SQL错误1136:列计数与第1行的值计数不匹配我的代码不应生成此错误,因此我假设您正在运行其他操作。
update topic t inner join (
  select topicId, max(createtime) createTime
  from post
  group by topicId
) p on p.topicId = t.id 
set t.topicCloseTime = p.createTime;
| id  | topicCloseTime |
| --- | -------------- |
| 7   | 333            |
| 8   |                |