Como faço para atualizar esse campo no meu banco de dados SQL?
-
21-08-2019 - |
Pergunta
Eu tenho duas tabelas.
BoardPosts
BoardPostId INT PK
ModifiedOn DATETIME NULLABLE
BoardComments
BoardCommentId INT PK
BoardPostId INT
CreatedOn DATETIME
Um post placa tem zero a muitos comentários.
Gostaria de definir o campo ModifiedOn
ser a data comentário mais recente, se a placa tem um comentário. Caso contrário, apenas deixá-lo nulo.
Como posso fazer isso, usando TSQL?
algo como ...
UPDATE BoardPosts
SET ModifiedOn = CreatedOn
SELECT TOP(1) CreatedOn
FROM BoardPosts a INNER JOIN BoardComments b ON a.BoardPostId = b.BoardPostId
???
Solução
Eu acho que isso vai funcionar ...
UPDATE BoardPosts
SET ModifiedOn = (SELECT MAX(CreatedOn)
FROM BoardComments
WHERE BoardComments.BoardPostId = BoardPosts.BoardPostId)
Outras dicas
Eu decidi ter em conta ambos os Exercícios comentados e descomentei:
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
Espero que isso ajude!
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow