1

我正在尝试开发此代码:

$users = $facebook->api(array(
  'method' => 'fql.query',
  'query' =>    "SELECT uid, last_name, pic_big"
             + " FROM user WHERE uid IN ("
             + "     SELECT uid" 
             + "     FROM page_fan"
             + "     WHERE page_id='411133928921438'" 
             + "         AND uid IN ("
             + "             SELECT uid2 FROM friend WHERE uid1 = me()"
             + "         )"
             + ")"
));

这个想法是我不想使用运算符 IN 但不是 IN,但 FQL 不支持 NOT IN 之类的运算符,除了......我怎么能用 FQL 做到这一点?......

4

3 回答 3

15

Facebook 确实支持 NOT IN。你只需要把它包在足够多的花括号里。

例如,要查找参加活动的不是当前用户或当前用户的朋友的用户:

SELECT uid, name FROM user WHERE uid IN (
  SELECT uid FROM event_member WHERE eid=209798352393506
)
AND NOT (uid=me())
AND NOT (uid IN (
  SELECT uid1 FROM friend WHERE uid2=me()
))
于 2012-08-20T14:01:55.523 回答
2

刚刚找到了一种方法NOT IN,不得不分享这个好消息;)

SELECT post_id, actor_id, message FROM stream WHERE source_id in(a, b, c) and NOT (actor_id in (a, b, c))

这将从未知用户的多个页面获取消息,即用户的所有帖子或不是页面本身的页面,即粉丝。

于 2012-11-20T11:57:55.860 回答
1

FQL中没有NOT IN运算符。您可以使用IN进行简单的选择并使用 PHP 进行否定。这有点开销,但据我所知,这是唯一的方法。

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

于 2012-05-10T11:45:29.510 回答