Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

É possível executar uma consulta para cada banco de dados em bancos de dados mysql e somar ou combinar resultados usando apenas o ambiente de comandos mysql?


Algo como isso pode fazer. Eu não tenho um monte de 'cães com logs' para testar isso, mas tentei uma versão ligeiramente editada, e a ideia básica parece funcionar.

Crie a string de consulta em uma variável e use uma instrução preparada para executá-lo.
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;