Как выбрать из MySQL, где имя таблицы является переменной - PullRequest
47 голосов
/ 11 января 2012

У меня есть случай, когда получение имени таблицы должно происходить из заданной переменной, например:

SET @ID_1 = (SELECT ID FROM `slider` LIMIT 0,1);
SET @Cat = (SELECT Category FROM `slider` LIMIT 0,1);
select * from @Cat where ID = @ID_1

, но при этом MySQL выдает ошибку, поэтому кто-то может показать мне, как я могу этого достичь,это мои детские шаги в MySQL.

1 Ответ

72 голосов
/ 11 января 2012

Вы должны сделать это с подготовленным заявлением . Что-то вроде:

SET @s = CONCAT('select * from ', @Cat, ' where ID = ', @ID_1); 

PREPARE stmt1 FROM @s; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; 
...