Решение
Вы можете использовать динамические переменные с запросами:
SET @table := (select tableName from test limit 1);
set @qry1:= concat('select * from ',@table);
prepare stmt from @qry1 ;
execute stmt ;
ИЛИ even:
set @qry1:= concat('select * from ', (select tableName from test limit 1));
select @qry1;
prepare stmt from @qry1 ;
execute stmt ;
Пример SQLFiddle: http://sqlfiddle.com/#!9/a787e3/1
Примечание: SqlFiddle не позволяет запускать execute
в правом редакторе, поэтому мне пришлось использовать представление.
Отказ от ответственности / Примечания:
Вы должны очистить все входные данные таблицы tableName.Это сделано для того, чтобы никто не вставлял SQL в эту таблицу и выполнял ее.
Кроме того, обратите внимание, что в реальной базе данных мы имеем условие where
в запросе выбора таблицы.
Пример:
set @qry1:= concat('select * from ', (select tableName from test where id='something'));