Bem, eu tenho usado tabelas temporárias em vez de variáveis de matriz. Não é a melhor solução, mas funciona.
Observe que você não precisa definir formalmente seus campos, apenas criá-los usando um SELECT:
DROP TEMPORARY TABLE IF EXISTS my_temp_table;
CREATE TEMPORARY TABLE my_temp_table
SELECT first_name FROM people WHERE last_name = 'Smith';
(Veja também Criar tabela temporária a partir da instrução select sem usar Create Table .)