Mysql
 sql >> Base de données >  >> RDS >> Mysql

Est-il possible d'exécuter une requête pour chaque base de données dans les bases de données mysql et d'additionner ou de combiner les résultats en utilisant uniquement l'environnement de commande mysql ?

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;