2010-02-23 72 views
9

Facebook query language(FQL),你可以指定一个IN条款,如:Facebook - “IN”子句中的最大参数数量?

SELECT uid1, uid2 FROM friend WHERE uid1 IN (1000, 1001, 1002) 

有谁知道什么是你可以传递到IN参数的最大值是多少?

+0

我看到查询失败,像这样的错误:例外:收到的Facebook错误响应(代码601):解析器错误:意外的','在位置2083.)我没有任何额外的','所以我认为SELECT必须有一些限制。我不会通过浏览器,但我通过浏览器遇到完全相同的问题。这指向比以下5000小得多的值。 – 2014-03-24 17:15:44

回答

-2

据我所知,在SQL IN中不存在最大数量的参数。
http://www.sql-tutorial.net/SQL-IN.asp

只是不使用更多的参数比你有值的函数来检查,因为你不会得到任何结果(不知道这是否会放弃一个错误,因为我从来没有尝试过)。

+0

我相信有一个限制。 – Faruz 2010-03-21 07:57:09

+0

@法鲁兹:我真的不知道,只是猜测。超出限制的任何解决方案可能应该以更好的方式完成 – TheChange 2010-03-22 14:46:38

+0

在某些SQL服务器中,限制是它们的SQL解析器可以处理的字符串的长度,而不是“IN”子句中的项目数。我不确定具体的查询长度限制是什么。 – 2010-03-31 20:41:57

3

我觉得最大的结果集的大小为5000

+0

为什么?你有引用吗? – Oddthinking 2010-05-05 02:46:35

+0

我要从Facebook开发人员板http://forum.developers.facebook.com/viewtopic.php?pid=216570 – Ceilingfish 2010-05-05 09:40:11

+0

Downvoted。问题不在于* resultset *有多大,而是*有多少object_ids可以传入IN()* * – rinogo 2014-03-24 19:52:07

2

这似乎是一个奇数(所以也许我错过计数,但它很接近〜1),但我似乎无法查询超过73个IN项目。这是我的查询:

SELECT object_id, metric, value 
FROM insights 
WHERE object_id IN (~73 PAGE IDS HERE~) 
AND metric='page_fans' 
AND end_time=end_time_date('2011-06-04') 
AND period=period('lifetime') 

这是使用JavaScript FB.api()电话。

0

不确定是否存在未记录的限制或者它可能是facebook fql服务器超时的问题。

你应该检查是否有从FB Web服务器返回一个错误500这可能表明你正在传递一个太长GET声明(见Facebook query language - long query

我意识到自己的GET太长,所以不是把许多数字在IN语句中,我在那里提取了一个从FB FQL中获取这些数字的子查询 - 但不幸的是,它看起来像FB无法处理查询并在JSON中返回了一个'​​未知错误',这实际上无助于我们理解问题。