我有幾個版本分配給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 Server 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 Server 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的版本嗎? –
在mysql上輸入錯誤 - SQL Server版本是2012 – TonyC