说我有两个表:
论坛帖子:
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
个(我是指所有行中createStamp
中forum post
的最大值具有相同的topicId
,例如id:7将是333)。那怎么可能? tnx
答案 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 | |