Você também pode fazer com que a cláusula IN obtenha os resultados de uma consulta, como:
SELECT * FROM table1
WHERE table1.id IN
(
SELECT id from table2
)
Dessa forma, você não precisa gerar uma string de texto com todos os valores possíveis.
No mysql, você deve poder colocar quantos valores na cláusula IN quiser, apenas limitado pelo valor de "max_allowed_packet".
http://dev.mysql.com/doc /refman/5.0/en/comparison-operators.html#function_in http://dev.mysql.com /doc/refman/5.0/en/server-system-variables.html#sysvar_max_allowed_packet