2010-02-23 14 views
9

En Facebook query language(FQL), puede especificar una cláusula IN, como:Facebook - número máximo de parámetros en la cláusula "IN"?

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

¿Alguien sabe cuál es el número máximo de parámetros que puede pasar a IN?

+0

Estoy viendo las consultas que fallan con un error como este: Excepción: respuesta de error Facebook recibido (código 601): Error del analizador: inesperado ',' en la posición 2083.) No tengo ningún extra ',' entonces creo debe haber algún límite del tamaño de los SELECT. No voy a través de un navegador, pero sí experimento exactamente el mismo problema a través del navegador. Esto apunta a un valor mucho más pequeño que el 5000 a continuación. –

Respuesta

-2

No debe haber un número máximo de parámetros como no hay en SQL IN hasta donde yo sé.
http://www.sql-tutorial.net/SQL-IN.asp

simplemente no utilizar más parámetros de lo que tiene valores para la función de comprobar porque no se obtendrá ningún resultado (no sé si va a dar un error que no he intentado).

+0

Creo que hay un límite. – Faruz

+0

@Faruz: No lo sé, solo lo adiviné. Cualquier solución que supere el límite quizás deba hacerse de una mejor manera – TheChange

+0

En algunos servidores SQL, el límite es la longitud de cadenas que su analizador SQL puede manejar, no el número de elementos en la cláusula "IN". Sin embargo, no estoy seguro de cuáles son los límites específicos de longitud de consulta. –

3

creo que el tamaño máximo del conjunto de resultados es 5000

+0

¿Por qué? ¿Tienes una cita? – Oddthinking

+0

Voy desde los foros de desarrolladores de Facebook http://forum.developers.facebook.com/viewtopic.php?pid=216570 – Ceilingfish

+0

Downvoted. La pregunta no era sobre cuán grande puede ser * resultset *, sino * cuántos object_ids puedes pasar a 'IN()' * – rinogo

2

Puede parecer un número impar (así que quizás me falta contado, pero está cerca ~ 1), pero me parece que no puede consultar más de 73 IN artículos . Esta es mi consulta:

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') 

Se trata de utilizar la llamada de JavaScript FB.api().

0

No estoy seguro de si hay un límite no documentado o podría ser un problema de Facebook fql server timeout.

Usted debe verificar si hay un error 500 de regresar de servidor web FB lo que podría indicar que está pasando una instrucción GET demasiado tiempo (ver Facebook query language - long query)

me di cuenta de mi get era demasiado largo, así que en vez de poner muchos números en la declaración IN, puse una subconsulta allí que recupera esos números de FB FQL, pero desafortunadamente parece que FB no pudo manejar la consulta y devolvió un "error desconocido" en el JSON que realmente no nos ayuda a entender el problema.

Cuestiones relacionadas