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 | |