Depende de la base de datos que esté utilizando y de la configuración de su base de datos.
Para MySQL, debe asegurarse de utilizar consultas almacenadas en búfer. En PDO lo configuras así:
$myPdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
Esto significa que todos los datos se enviarán al cliente (no es lo mismo que obtenerlos todos en PHP).
La otra alternativa (probablemente peor) es abrir una nueva conexión de base de datos siempre que detecte que se está ejecutando una consulta con un conjunto de resultados aún abierto.
El normal mysql_query()
utiliza una consulta almacenada en búfer, por lo que funcionará con varios conjuntos de resultados.