No desea que se ejecute como una consulta. Por lo general, es mejor tener muchas consultas pequeñas y simples en lugar de una consulta complicada. De hecho, le sugiero que actualice su código para tener aún más consultas, por ejemplo, el contenido de "no existe()" no debe hacerse como una subconsulta, debe ser una consulta completamente separada para mejorar el rendimiento.
Hay dos partes, primero debe enviar los encabezados HTTP correctos para activar una descarga de CSV:
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="export.csv";' );
Luego simplemente imprima los datos en 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";
}
Nota:CSV es un formato incorrecto y solo funcionará en algunas ediciones de Microsoft Excel. Dependiendo de dónde viva el usuario (p. ej., Europa), es posible que no funcione correctamente. Sin embargo, para la mayoría de las ediciones de Excel, lo anterior funcionará. No existe una buena solución excepto evitar el uso de CSV.