Как мне обновить это поле в моей базе данных sql?
-
21-08-2019 - |
Вопрос
у меня есть два стола.
BoardPosts
BoardPostId INT PK
ModifiedOn DATETIME NULLABLE
BoardComments
BoardCommentId INT PK
BoardPostId INT
CreatedOn DATETIME
Сообщение на доске содержит от нуля до многих комментариев.
Я хочу установить ModifiedOn
поле должно содержать дату самого последнего комментария, если на доске есть комментарий.В противном случае просто оставьте его нулевым.
Как мне это сделать, используя TSql ?
что - то вроде ...
UPDATE BoardPosts
SET ModifiedOn = CreatedOn
SELECT TOP(1) CreatedOn
FROM BoardPosts a INNER JOIN BoardComments b ON a.BoardPostId = b.BoardPostId
???
Решение
Я думаю, это сработает...
UPDATE BoardPosts
SET ModifiedOn = (SELECT MAX(CreatedOn)
FROM BoardComments
WHERE BoardComments.BoardPostId = BoardPosts.BoardPostId)
Другие советы
Я решил учесть как прокомментированные, так и не прокомментированные сообщения:
update p1 set ModifiedOn = (
select
max(case when c.CreatedOn is null then p.CreatedOn
else c.CreatedOn end) as ModDate
from
boardposts p
left outer join BoardComments c on
p.BoardPostId = c.BoardPostId
where
p.BoardPostId = p1.BoardPostId
group by p.BoardPostId
)
from
BoardPosts p1
Надеюсь, это поможет!
Не связан с StackOverflow