我有一个YQL查询,它结合了一堆RSS提要,然后按日期对它们进行排序。它工作得很好,但我希望能够对结果进行分页。
这是我的问题:
select channel.item.title, channel.item.link, channel.item.pubDate, channel.item.description(0) from xml where url in(... urls go here ...) | unique(field='channel.item.link') | sort(field='channel.item.pubDate', descending='true')
问题是yql在排序过滤器之前执行LIMIT和OFFSET。因此,如果我有一个LIMIT 5,我最终只得到列表中第一个RSS提要的前5个项目...而不是我所有组合提要的前5个项目。
是否有链接查询的方法,因此我可以获取所有查询以对所有结果进行排序,并调用限制我的结果的查询。
感谢您的帮助。
答案 0 :(得分:1)
使用truncate(count = 5)获取已过滤Feed的前5项。
select channel.item.title, channel.item.link, channel.item.pubDate, channel.item.description(0) from xml where url in(... urls go here ...) | unique(field='channel.item.link') | sort(field='channel.item.pubDate', descending='true') | truncate(count=5)
或者反向排序的tail()方法(上面发布)也可以。
答案 1 :(得分:0)
如何在另一个方向上使用tail()
和另外sort()
呢?
这样的事情:
select channel.item.title, channel.item.link, channel.item.pubDate, channel.item.description(0) from xml where url in(... urls go here ...) | unique(field='channel.item.link') | sort(field='channel.item.pubDate', descending='false') | tail(count=5)
我没试过这个,我不确定你需要哪种排序,但你肯定可以使用tail()
。显然没有等效的head()
功能,因此请确保最新的项目在排序后结束。
有关详细信息,请参阅 http://developer.yahoo.com/yql/guide/sorting.html