どのように私は私のSQLデータベースでこのフィールドを更新しますか?

StackOverflow https://stackoverflow.com/questions/846955

  •  21-08-2019
  •  | 
  •  

質問

私は2つのテーブルを持っています。

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

この情報がお役に立てば幸い!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top