Você não quer que ele seja executado como uma consulta. Geralmente é melhor ter muitas consultas pequenas e simples em vez de uma consulta complicada. Na verdade, sugiro que você atualize seu código para ter ainda mais consultas, por exemplo, o conteúdo do "não existe()" não deve ser feito como uma subconsulta, deve ser uma consulta completamente separada para melhorar o desempenho.
Existem duas partes, primeiro você precisa enviar os cabeçalhos HTTP corretos para acionar um download CSV:
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="export.csv";' );
Depois é só imprimir os dados no formato CSV:
while ($row = mysql_fetch_array($myQuery)) {
$first = true;
foreach ($row as $cell) {
if ($first)
$first = false;
else
print ',';
print '"' . addslashes($cell) . '"';
}
print "\n";
}
Observação:CSV é um formato incorreto e só funcionará em algumas edições do Microsoft Excel. Dependendo de onde o usuário mora (por exemplo:Europa), pode não funcionar corretamente. No entanto, para a maioria das edições do Excel, o acima funcionará. Não há boa solução, exceto evitar o uso de CSV.