mysql填充另一个表的最大值

时间:2019-10-09 16:30:13

标签: 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
==================
7   ????
8   ????

我想用该主题中所有帖子的createTime的最大值填充?????中的forum topic个(我是指所有行中createStampforum post的最大值具有相同的topicId,例如id:7将是333)。那怎么可能? tnx

3 个答案:

答案 0 :(得分:0)

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

UPDATE forumtopic ft 
SET ft.topicCloseTime = (SELECT MAX(fp.createTime) 
                         FROM forumpost fp 
                         WHERE fp.topicId = ft.Id)

答案 1 :(得分:0)

我将通过加入更新来处理此问题:

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;

答案 2 :(得分:0)

将表加入到查询中,该查询返回每个createTime的最大值topicId

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;

请参见demo
结果:

| id  | topicCloseTime |
| --- | -------------- |
| 7   | 333            |
| 8   |                |