mySQL запрос по нескольким схемам - PullRequest
1 голос
/ 13 марта 2020

У меня есть структура с несколькими схемами (одна и та же таблица для всех схем).

Вот как можно получить все схемы:

select table_schema from information_schema.tables where table_name = 'messages' and TABLE_TYPE = 'BASE TABLE'

Этот запрос предназначен для объединения между Таблица 'messages' в двух таблицах -

select *, '1' as customer from customer_1.messages union select *,  '2' as customer from customer_2.messages

Как использовать запрос, описанный выше, для всех схем из первого запроса? Не нужно присоединяться. Может быть все, что поможет мне вернуть результаты по всем схемам.

Примечание. Может быть 5000-10000 схем

1 Ответ

2 голосов
/ 13 марта 2020
DELIMITER @@;

CREATE PROCEDURE join_all_data()
BEGIN
    SET @counter := 0;
    SELECT GROUP_CONCAT('select *, ',
                        @counter := @counter + 1,
                        ' as customer from ',
                        table_schema,
                        '.messages'
                        SEPARATOR ' UNION ALL ')
        FROM information_schema.tables 
        WHERE table_name = 'messages' 
          AND table_type = 'BASE TABLE'
        INTO @sql;
    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    DROP PREPARE stmt;
END
@@;

DELIMITER ;

CALL join_all_data;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...