0

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

BoardPosts
BoardPostId INT PK
ModifiedOn DATETIME NULLABLE

BoardComments
BoardCommentId INT PK
BoardPostId INT
CreatedOn DATETIME

ボード投稿には0から多くのコメントがあります。

ModifiedOnボードにコメントがある場合は、フィールドを最新のコメント日付に設定したいと思います。それ以外の場合は、nullのままにします。

TSqlを使用してこれを行うにはどうすればよいですか?

何かのようなもの ...

UPDATE BoardPosts
SET ModifiedOn = CreatedOn
SELECT TOP(1) CreatedOn
FROM BoardPosts a INNER JOIN BoardComments b ON a.BoardPostId = b.BoardPostId

???

4

2 に答える 2

2

これでうまくいくと思います...

UPDATE BoardPosts
SET ModifiedOn = (SELECT MAX(CreatedOn) 
                  FROM BoardComments 
                  WHERE BoardComments.BoardPostId = BoardPosts.BoardPostId)
于 2009-05-11T06:42:52.133 に答える
0

コメント付きの投稿とコメントなしの投稿の両方を考慮に入れることにしました。

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

お役に立てれば!

于 2009-05-11T06:50:34.303 に答える