Не так уж и элегантно, но вы можете добавить столбец идентифицирующих целых чисел в каждую из ваших таблиц, укажите для этого столбца значение по умолчанию 1, 2 (в зависимости от того, какая это таблица - вы можете даже добавить таблицу поиска (tableId - -> tableName) и тогда вы сможете определить, из какой таблицы пришла данная строка.
Вы, конечно, тоже должны были бы внести те же изменения в таблицу MERGE ...
С любовью сорвал документы MERGE MySQL :
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,message CHAR(20)) ENGINE=MyISAM;
CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,message CHAR(20)) ENGINE=MyISAM;
INSERT INTO t1 (message) VALUES ('Testing'),('table'),('t1');
INSERT INTO t2 (message) VALUES ('Testing'),('table'),('t2');
CREATE TABLE total (a INT NOT NULL AUTO_INCREMENT,message CHAR(20),INDEX(a)) ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
alter table t1 add column identifier int unsigned not null default 1;
alter table t2 add column identifier int unsigned not null default 2;
drop table total;
CREATE TABLE total (a INT NOT NULL AUTO_INCREMENT,message CHAR(20),identifier int unsigned,INDEX(a)) ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
У вас будет довольно скучная задача изменить все 40 таблиц, хотя ...