web-dev-qa-db-ja.com

テーブル名が可変であるMySQLから選択する方法

テーブル名を取得するには、次のようなセット変数から取得する必要がある場合があります。

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の私の小さなステップだからです。

47
Burimi

準備済みステートメント を使用してこれを行う必要があります。何かのようなもの:

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

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