我正在编写一个脚本来定期检查RSS源,并需要删除旧文章。我发现这个答案看起来非常接近我正在寻找的内容:SQL query: Delete all records from the table except latest N?
我需要一个类似的解决方案,除了它每个Feed保留N篇文章(而不是一般的N篇文章)。每篇文章都有一个名为“RSSFeedID”的字段,该字段引用另一个表中的特定Feed。因此,对于每个RSSFeedID,我只需要保留N篇文章。
有关如何做到这一点的任何想法?原始SQL查询或LINQ-to-SQL代码都非常有用。谢谢!
答案 0 :(得分:1)
如果你的两个表名为RSSFeeds,RSSPosts,这就是你如何做到的。 Pseudocode 提供。
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
答案 1 :(得分:0)
这太过分了。当您使用相同的方法向特定Feed添加新文章时,为什么不在每个Feed的基础上执行此操作?