¿Cómo se actualiza este campo en mi base de datos SQL?
-
21-08-2019 - |
Pregunta
Tengo dos tablas.
BoardPosts
BoardPostId INT PK
ModifiedOn DATETIME NULLABLE
BoardComments
BoardCommentId INT PK
BoardPostId INT
CreatedOn DATETIME
A en los foros tiene cero a muchos comentarios.
Deseo establecer el ModifiedOn
campo para ser la fecha más reciente de comentario, si la placa tiene un comentario. De lo contrario, simplemente lo deja nulo.
¿Cómo puedo hacer esto, utilizando TSQL?
algo así como ...
UPDATE BoardPosts
SET ModifiedOn = CreatedOn
SELECT TOP(1) CreatedOn
FROM BoardPosts a INNER JOIN BoardComments b ON a.BoardPostId = b.BoardPostId
???
Solución
Creo que esto va a funcionar ...
UPDATE BoardPosts
SET ModifiedOn = (SELECT MAX(CreatedOn)
FROM BoardComments
WHERE BoardComments.BoardPostId = BoardPosts.BoardPostId)
Otros consejos
Me decidí a tener en cuenta tanto los mensajes comentadas y sin comentar:
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 esto ayude!
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow