FQL SELECT query with IN ,NOT Keyword

2019-02-26 03:19发布

问题:

I'm trying to retrieve all my friends expect few people.

I formed the query like this

    SELECT uid,name FROM user WHERE uid NOT IN ($x)

Retrieve every one expect those people who are in $x.

This is giving me an fatal error Uncaught Exception: 601: Parser error: unexpected 'NOT

Thanks in advance!

回答1:

You can use WHERE NOT (columnName IN (things 'not in')

Like this example :

SELECT post_id, message
 FROM stream 
 WHERE source_id IN ( SELECT page_id 
                        FROM page 
                       WHERE name='coca-cola'
                    ) 
   AND NOT (message IN ( 'probando cocacola'
                       , 'Stijn '
                       , 'Ha ha ha me crezy hu'
                       , ''
                       )
           )
LIMIT 50


回答2:

"NOT IN" is not a supported feature of FQL. Ref: http://forum.developers.facebook.net/viewtopic.php?id=1420

I would suggest using something like this to get all of your friends:

SELECT uid, name FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me())

And then in your script when this returns ignoring those you don't want, assuming you are using php something like:

foreach( $result['data'] as $row )
{
  if( !in_array($row['uid'], $x) // do stuff
  else // ignore
}

Hope that helps.