내 SQL 데이터베이스 에서이 필드를 어떻게 업데이트합니까?

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

  •  21-08-2019
  •  | 
  •  

문제

나는 두 개의 테이블이 있습니다.

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