2013-04-23 67 views
0

我有一個約90萬條目的數據庫表。我需要更新所有較舊的條目,以便我可以將它們移動到一個存檔表。我能夠找到計數大於1的重複項,並找出重複的次數。如何更新SQL表中的列如果條目是重複的並保留最新的條目?

這是我用於此工作的查詢。

SELECT DWPAGECOUNT, DOCTYPE, FILENAME, First, middleinitial, last, 
    COUNT(*) as Number_of_Duplicates 
    FROM dbo.REGISTRAR 
    WHERE first IS NOT NULL 
    GROUP BY DWPAGECOUNT, DOCTYPE, FILENAME, First, middleinitial, last 
HAVING COUNT(*) > 1 
    ORDER by Number_of_Duplicates desc 

我現在需要不止一次更新表上的任何內容,並保持最新條目不變並更新狀態列以進行復制。

我該怎麼做?

在此先感謝您的幫助。

+0

表結構將有所幫助 - 什麼是重複的。 「最新」行如何標記? – 2013-04-23 16:36:03

回答

1
;WITH x AS 
(
    SELECT DWPAGECOUNT, DOCTYPE, FILENAME, First, middleinitial, last, 
    [STATUS], 
    rn = ROW_NUMBER() OVER 
     (
      PARTITION BY 
      DWPAGECOUNT, DOCTYPE, FILENAME, First, middleinitial, last 
      ORDER BY 
      STOREDATETIME DESC 
     ) 
    FROM dbo.REGISTRAR 
) 
UPDATE x SET [STATUS] = CASE WHEN rn > 1 THEN 'DUP' ELSE 'NOT DUP' END; 
+0

有一個字段包含插入條目的日期和時間。 – user2066533 2013-04-23 16:39:47

+0

@ user2066533好的,那個專欄叫什麼? – 2013-04-23 16:40:11

+0

該列的名稱是STOREDATETIME – user2066533 2013-04-23 16:41:53

相關問題