mysql заполнить столбец из другого максимального значения таблицы - PullRequest
0 голосов
/ 09 октября 2019

Допустим, у меня есть две таблицы:

сообщение на форуме:

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

Я хочу заполнить ????? s в forum topic с максимумом всех записей createTime в этой теме (я имею в виду максимум createStamp из forum post среди всех строк с одинаковым topicId, например, id: 7 будет 333). Как это возможно? Тпй

Ответы [ 2 ]

0 голосов
/ 09 октября 2019

Я бы справился с этим через обновление соединения:

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;
0 голосов
/ 09 октября 2019

Вы можете использовать UPDATE с коррелированным подзапросом (синтаксис может быть неправильным ... попробуйте):

UPDATE forumtopic ft 
SET ft.topicCloseTime = (SELECT MAX(fp.createTime) 
                         FROM forumpost fp 
                         WHERE fp.topicId = ft.Id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...