Facebook 类FQL算子

Facebook 类FQL算子,facebook,facebook-graph-api,facebook-fql,Facebook,Facebook Graph Api,Facebook Fql,有人能告诉我为什么这样做吗: 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" 当我把它放进去的时候 我得到的答复是: 你的

有人能告诉我为什么这样做吗:

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"
当我把它放进去的时候

我得到的答复是:

你的陈述是不可转位的。WHERE子句必须包含可索引列。这些列在从链接的表中用*标记

然而,url实际上是可索引的


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

站点不可索引,只能选择。它旁边没有一个*符号


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

FQL!=SQL您不能在任何想要的列上添加WHERE。考虑到这么多同时写作的作家所要求的表演,这并不奇怪,我的意思是,世界上每十个人中就有一个人报名


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

输入错误。。。实际上,从一开始就应该是URL。编辑了这个问题。结果仍然是一样的。那么我的猜测是因为,上面的示例没有在索引上使用函数。因此,WHERE-uid在SELECT-uid2 FROM-friend-WHERE-uid1=me中充当索引,然后使用WHERE子句的其余部分。因此,运行SELECT url、id、type、site FROM object_url,其中url='sephora'和strpslowerurl'sephora'>=0将是一个有效的查询,但显然不会返回任何结果,因为url='sephora'不是完整的url,所以您可能需要更改查询