是否有可能在YQL中获得两个结果集的交集或差异?

时间:2012-01-20 00:21:06

标签: sql twitter yql

我需要完全在客户端构建一个Twitter模块。

我打算将Twitter API用于数据,YQL用于Same Origin Policy,以及更高的速率限制。我成功之前就使用过这种组合。

我需要做的一件事是获取带有主题标签和来自有限用户的推文列表。

This gets tweets with the #stackoverflow hash tag by users alexdickson and lizardbill.

我还需要获得一组不同的推文。

This gets all tweets with the #stackoverflow hash tag.

现在,我需要显示第二个集合,但不包括第一个集合的结果。这将是结果的 diff ,例如PHP的array_diff()

为了完整性,我可能还需要通过获得两个结果的交集来实现某些目标,即两个结果集中出现的推文列表。这类似于PHP的array_intersect()

我用过SQL已经有一段时间了,不能想到如何在YQL中实现这一点。

2 个答案:

答案 0 :(得分:2)

看起来我终于明白了。 YQL支持子查询。

SELECT results 
FROM   json 
WHERE  url = "http://search.twitter.com/search.json?q=%23stackoverflow" 
       AND results.id NOT IN (SELECT results.id 
                              FROM   json 
                              WHERE  url = 
"http://search.twitter.com/search.json?q=%23stackoverflow%20from%3aalexdickson,%20OR%20from%3alizardbill" 
) 

YQL Console

答案 1 :(得分:2)

YQL支持子选择(子查询)。见Joining Tables with Sub-selects。子选择与IN operator一起使用,以过滤外部选择的结果。

对于您的特定查询,还有一个twitter.search Community Open Data Table可用于避免您构建Twitter网址并使用json表。

select *
from twitter.search
where q="#stackoverflow" 
and id not in (
    select id 
    from twitter.search 
    where q="#stackoverflow from:alexdickson, OR from:lizardbill"
)

Try this query in the YQL console。)