Quelque chose comme ça pourrait faire l'affaire. Je n'ai pas un tas de "chiens avec des bûches" pour tester cela, mais j'ai essayé une version légèrement modifiée, et l'idée de base semble fonctionner.
Créez la chaîne de requête dans une variable, puis utilisez une instruction préparée pour l'exécuter.
SELECT @query:=CONCAT(
'select count(*) from ('
, GROUP_CONCAT( CONCAT( y.prefix, x.table_schema, y.postfix ) SEPARATOR ' UNION ALL ' )
, ') as total_count' )
FROM (
SELECT DISTINCT table_schema
FROM information_schema.tables
WHERE table_schema LIKE '%dog%'
) AS x
JOIN (
SELECT
'select * from ' AS prefix
, '.log where insane = 1' AS postfix
) AS y
;
-- SELECT @query AS Query;
PREPARE STMT FROM @query;
EXECUTE STMT;
DEALLOCATE PREPARE STMT;