2011-05-04 53 views
0

我想從沒有日期字段的6個月以上的表中刪除數據。請告訴我。刪除表中沒有日期字段的數據

+1

請仔細閱讀本:http://tinyurl.com/so-hints – Oded 2011-05-04 15:33:08

+0

,如果您有鏈接到另一個表中確實有,你可以使用日期字段鍵列如從table1內部連接table2刪除table1.table2id = table2.table2id其中table2date <@ dateolderthan6months – Andrew 2011-05-04 15:35:44

+0

無法完成。有這種性質的無sepcific審計保存在SQL服務器 – 2011-05-04 15:35:51

回答

6

沒有日期字段,這是不可能的。

但是,如果你有6個月前備份,你可以刪除這是在備份表中的所有數據。

+0

通過19秒打我給它。 +1 – zeroef 2011-05-04 15:35:51

+0

是的,我建議同樣的事情。 – 2011-05-04 15:48:45

0

你可以計算出每月多少數據是如何產生的平均水平。 * 6會給你保留的行數。 所以你可以採取當前的最大ID,少n行。如果你的表沒有一個ID,您可以使用人工一個這樣的:

SELECT *, n = ROW_NUMBER() OVER (ORDER BY (SELECT NULL)), 
FROM your_table_name 
+0

如果表中沒有'id'字段,他們應該如何處理這些信息? – 2011-05-04 15:48:29

0

沒有一個日期列,你可以不知道哪些行超過六個月。如果密鑰列不是單調遞增的值(即,不是簡單的整數序列),則這是特別的問題。

但是,如果您有數據庫的備份,則可能會生成六個月的備份dB中的行列表,並將其與當前dB中的行進行比較,然後推斷出哪些行是在添加之後添加的備份已完成。那麼你知道剩下的行至少有六個月大。

建議#2

如果該行的鍵列是單調遞增值(如整數序列,或唯一增加帳戶ID),那麼你可以每個月都插入一個特殊定點記錄(或一週,或一天,無論)與特殊值,它告訴你,這是一個標記行(而不是正常的數據)。然後您知道每個具有低於標記鍵值的鍵字段值的行都插入了標記之前。

然後每個月(周/日/其他),尋找那些舊的行和刪除它們是相當簡單的。

相關問題