Моя цель - объединить таблицы из разных схем в одну схему, поэтому я хотел бы выполнить этот запрос:
INSERT INTO inventory.maintenance
SELECT *
FROM (
SELECT NULL, 'A' as department_id, maintenance.* FROM a_inventory.maintenance
UNION
SELECT NULL, 'B' as department_id, maintenance.* FROM b_inventory.maintenance
UNION
SELECT NULL, 'E' as department_id, maintenance.* FROM e_inventory.maintenance
UNION
SELECT NULL, 'L' as department_id, maintenance.* FROM l_inventory.maintenance
UNION
SELECT NULL, 'M' as department_id, maintenance.* FROM m_inventory.maintenance
) AS tmp_maintenance
Мне нужно выполнить этот запрос для многих различных таблиц, и все таблицы не находятся ввсе отделы.Вместо того, чтобы писать каждый запрос вручную, я хотел бы добавить немного автоматизации ...
SET @department = ('A', 'B', 'E', 'L', 'M');
SET @connection = 'inventory';
SET @table = 'maintenance';
/* MAGIC HERE to create @union */
SET @s = CONCAT(
'INSERT INTO ', @connection, '.', @table,
'SELECT * FROM (', @union, ') AS tmp');
PREPARE stm1 FROM @s; EXECUTE stm1; DEALLOCATE PREPARE stm1;
Я хотел бы создать @union
из @department
.Я пытался использовать REPEAT
, но на самом деле это не работает.