DocumentID에 여러 버전이 할당되어 있습니다.이전 버전의 항목을 삭제하는 문
DocID Version
ABC 1
ABC 2
ABC 3
DEF 1
DEF 2
어떻게 이전 버전을 삭제하고 최신 버전 만 유지할 수 있습니까? 삭제 한 후,이 테이블에 남아 있어야 :
DocID Version
ABC 3
DEF 2
DocumentID에 여러 버전이 할당되어 있습니다.이전 버전의 항목을 삭제하는 문
DocID Version
ABC 1
ABC 2
ABC 3
DEF 1
DEF 2
어떻게 이전 버전을 삭제하고 최신 버전 만 유지할 수 있습니까? 삭제 한 후,이 테이블에 남아 있어야 :
DocID Version
ABC 3
DEF 2
SQL 서버 2005 + :
;WITH x AS (SELECT DocID, Version, rn = ROW_NUMBER() OVER
(PARTITION BY DocID ORDER BY Version DESC)
FROM dbo.tablename
)
DELETE x WHERE rn > 1;
SQL 서버 2000은 좀 더 복잡하다. (이 버전 정보를 포함하는 것이 유용합니다.)
DELETE t
FROM dbo.tablename AS t
LEFT OUTER JOIN
(
SELECT DocID, Version = MAX(Version)
FROM dbo.tablename
GROUP BY DocID
) AS t2
ON t.DocID = t2.DocID
AND t.Version = t2.Version
WHERE t2.DocID IS NULL;
분명히 후자의 쿼리 will work in MySQL as well (감사 @bluefeet).
MySQL의 경우, 스스로 다른 문제를 게시하는 것이 좋습니다.
SQL Server 인 경우 'mysql'태그가 붙은 이유는 무엇입니까? SQL Server의 버전을 지정할 수 있습니까? –
typo on mysql - SQL Server 버전은 2012입니다. – TonyC