Wie aktualisiere ich dieses Feld in meiner SQL-Datenbank?
-
21-08-2019 - |
Frage
ich habe zwei Tabellen.
BoardPosts
BoardPostId INT PK
ModifiedOn DATETIME NULLABLE
BoardComments
BoardCommentId INT PK
BoardPostId INT
CreatedOn DATETIME
Ein Forum erstellt hat null auf viele Kommentare.
Ich wünsche das ModifiedOn
Feld setzen: das letzte Kommentar Datum zu sein, wenn der Vorstand einen Kommentar hat. Ansonsten ist es nur null verlassen.
Wie kann ich das tun, mit TSQL?
so etwas wie ...
UPDATE BoardPosts
SET ModifiedOn = CreatedOn
SELECT TOP(1) CreatedOn
FROM BoardPosts a INNER JOIN BoardComments b ON a.BoardPostId = b.BoardPostId
???
Lösung
Ich denke, das wird funktionieren ...
UPDATE BoardPosts
SET ModifiedOn = (SELECT MAX(CreatedOn)
FROM BoardComments
WHERE BoardComments.BoardPostId = BoardPosts.BoardPostId)
Andere Tipps
Ich entschied mich zu berücksichtigen beide kommentiert und unkommentiert Beiträge:
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
Hope, das hilft!
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow