web-dev-qa-db-fra.com

Comment sélectionner dans MySQL où le nom de la table est variable

J'ai un cas où obtenir le nom de la table doit provenir d'une variable définie comme:

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

mais en procédant de cette façon, MySQL génère une erreur, donc quelqu'un pourrait-il me montrer comment je peux y parvenir, car ce sont mes premiers pas dans MySQL.

47
Burimi

Vous devez le faire avec un déclaration préparée . Quelque chose comme:

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

PREPARE stmt1 FROM @s; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; 
72
Joe Stefanelli