2010-02-26 115 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

这是矫枉过正。当您使用相同的方法将新文章添加到特定供稿时,为什么不在每次供稿的基础上做到这一点?

相关问题