【问题标题】:FQL like operatorFQL 类运算符
【发布时间】:2013-01-17 04:03:46
【问题描述】:

谁能告诉我为什么会这样:

SELECT name FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me()) AND strpos(lower(name),"jo") >=0

但事实并非如此:

"SELECT url, id, type, site FROM object_url WHERE strpos(lower(url), 'sephora') >= 0"

当我把它放入http://developers.facebook.com/docs/reference/rest/fql.query/

我收到以下回复:

您的语句不可索引。 WHERE 子句必须包含一个可索引的列。这些列在从http://developers.facebook.com/docs/reference/fql链接的表中用*标记

但是“url”确实是可索引的。

有什么想法吗?我已经搜索了 stackoverflow,但没有找到答案。

【问题讨论】:

    标签: facebook facebook-graph-api facebook-fql


    【解决方案1】:

    网站不可索引,只能选择。这里没有* https://developers.facebook.com/docs/reference/fql/object_url/

    您需要使用 url 或 id 作为可索引列,因此基本上其中之一需要在您的 where 子句中。

    【讨论】:

    • typo... 实际上它应该从一开始就是 URL。编辑了问题。结果还是一样。
    • 那么我的猜测是因为,最上面的例子没有在索引上使用函数。所以 WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me()) 充当索引,然后使用 where 子句的其余部分。所以运行 SELECT url, id, type, site FROM object_url WHERE url='sephora' 和 strpos(lower(url), 'sephora') >= 0 将是一个有效的查询(虽然显然不会返回任何结果为 url= 'sephora' 不是一个完整的网址)所以看起来你需要更改你的查询,恐怕
    【解决方案2】:

    FQL != SQL 你不能在任何你想要的列上使用 WHERE。考虑到这么多并发作家所需的表现,这并不奇怪,我的意思是,世界上每十个人中就有一个人报名。

    第二个示例中的问题是,在其中一个字符串函数中用作参数的字段失去了可索引性。它必须是列本身。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      • 2011-08-18
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多