0

我正在使用 PHP SDK 进行 FQL 调用以提取用户朋友的列表。它看起来像这样:

$all_friends = $facebook->api(array('method' => 'fql.query', 'query' => 'SELECT uid, name FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) ORDER BY name ASC'));

这很好用,但现在我还想从列表中排除一些朋友。我已经尝试过我认为有效的方法,但它似乎不起作用(它返回一个空列表)。

作为我正在尝试做的一个例子:

$all_friends = $facebook->api(array('method' => 'fql.query', 'query' => 'SELECT uid, name FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND uid NOT IN (12345,54218,68151) ORDER BY name ASC'));

有什么我想念的吗?谢谢。

4

2 回答 2

1

“NOT IN”不是 FQL 支持的功能。Graph API Explorer引发异常:(#601)解析器错误:在位置 92 出现意外的“NOT” 。

您可以使用 IN 进行简单的选择

$all_friends = $facebook->api(array('method' => 'fql.query', 'query' => 'SELECT uid, name FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) ORDER BY name ASC'));

并使用 PHP 使用 ids 进行过滤。据我所知,这是唯一的方法。

我找到了一个相关的帖子:链接在这里

于 2012-06-22T00:54:40.087 回答
1

这可以使用下一个 FQL 查询:

SELECT uid, name FROM user WHERE uid IN (
  SELECT uid2 FROM friend WHERE uid1 = me() 
) AND NOT ( uid IN ('13892588847', '10004291510061', '1000753466073'))
ORDER BY name ASC

在Graph API Explorer上试一试。

于 2014-04-04T12:22:00.360 回答