【问题标题】:Is it possible to get an intersection or a diff of two result sets in YQL?是否可以在 YQL 中获得两个结果集的交集或差异?
【发布时间】:2012-01-20 00:21:05
【问题描述】:

我需要完全在客户端构建一个 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来实现。

【问题讨论】:

    标签: sql twitter yql


    【解决方案1】:

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

    对于您的特定查询,还有一个 twitter.search Community Open Data Table 可让您免于构建 Twitter URL 和使用 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.)

    【讨论】:

      【解决方案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.

      【讨论】:

      • 您也可以以类似的方式使用twitter.search 社区表。 select * from twitter.search where q="#stackoverflow" and id not in (select id from twitter.search where q="#stackoverflow from:alexdickson, OR from:lizardbill")
      • @salathe 谢谢你。我从来没有注意到社区表。如果您将其发布为答案,我会接受:)
      猜你喜欢
      • 2010-12-06
      • 2011-02-13
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 2019-09-20
      • 2013-08-04
      • 1970-01-01
      • 2018-10-02
      相关资源
      最近更新 更多