Mysql
 sql >> Database >  >> RDS >> Mysql

È possibile eseguire una query per ciascun database nei database mysql e sommare o combinare i risultati utilizzando solo l'ambiente di comando mysql?

Qualcosa del genere potrebbe fare. Non ho un sacco di "cani con registri" con cui testarlo, ma ho provato una versione leggermente modificata e l'idea di base sembra funzionare.

Crea la stringa di query in una variabile, quindi utilizza una istruzione preparata per eseguirlo.

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;