2010-02-26 299 views
2

我正在編寫一個腳本來定期檢查RSS源並需要刪除舊文章。我碰到這個答案,這似乎非常接近我所尋找的:SQL query: Delete all records from the table except latest N?SQL查詢:刪除除xx以外的所有行最近

我需要一個類似的解決方案,以相同的方式工作,除了它每個飼料(而不是一般的N篇文章)保持N篇文章。每篇文章都有一個名爲「RSSFeedID」的字段,它引用了另一個表中的特定提要。所以對於每個RSSFeedID,我只需要保留N篇文章。

任何想法如何做到這一點?原始SQL查詢或LINQ-to-SQL代碼將非常有幫助。謝謝!

+1

如果只有我們有你的對象模型... – 2010-02-26 19:01:30

回答

1

如果你的兩個表格被稱爲RSSFeeds,RSSPosts,這裏是你如何做到這一點。 提供僞代碼

idList = query("SELECT unique id FROM RSSFeeds"); 
for each id in idList 
    query(" 
    DELETE FROM RSSPosts 
    WHERE id NOT IN 
     (SELECT id 
     FROM RSSPosts 
     WHERE RSSFeedId = @id 
     ORDER BY id DESC 
     LIMIT 10) 
    "); 
end 
+0

完美!我知道它會涉及一個子查詢,我無法用頭圍住它。謝謝!! – 2010-02-26 20:00:25

0

這是矯枉過正。當您使用相同的方法將新文章添加到特定供稿時,爲什麼不在每次供稿的基礎上做到這一點?

相關問題