Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist es möglich, eine Abfrage für jede Datenbank in MySQL-Datenbanken auszuführen und die Ergebnisse nur mit der MySQL-Befehlsumgebung zu summieren oder zu kombinieren?

So etwas könnte reichen. Ich habe nicht viele "Hunde mit Protokollen", um dies zu testen, aber ich habe eine leicht bearbeitete Version ausprobiert, und die Grundidee scheint zu funktionieren.

Erstellen Sie die Abfragezeichenfolge in einer Variablen und verwenden Sie dann eine vorbereitete Anweisung um es auszuführen.

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;