PREPARE stmt1 FROM " SELECT table_name FROM information_schema.tables WHERE table_name = 't1_first' UNION ALL SELECT table_name FROM information_schema.tables WHERE table_name = 't1_second'"; execute stmt1; table_name execute stmt1; table_name create or replace table t1 (a int primary key, table_name char(40)); insert into t1 values(1,"t1_first"); insert into t1 values(2,"t1_second"); PREPARE stmt2 FROM " SELECT table_name FROM t1 WHERE table_name = 't1_first' UNION ALL SELECT table_name FROM t1 WHERE table_name = 't1_second'"; execute stmt2; table_name t1_first t1_second execute stmt2; table_name t1_first t1_second flush tables; execute stmt2; table_name t1_first t1_second alter table t1 add column b int; execute stmt2; table_name t1_first t1_second execute stmt2; table_name t1_first t1_second drop table t1; execute stmt2; ERROR 42S02: Table 'test.t1' doesn't exist create or replace table t1 (a int primary key, table_name char(40)); insert into t1 values(1,"t1_first"); execute stmt2; table_name t1_first deallocate prepare stmt1; deallocate prepare stmt2; drop table t1;