Mysql 使用变量选择和更新

Mysql 使用变量选择和更新,mysql,Mysql,我必须根据查询中设置的变量执行更新和选择操作 SET @var1:=(SELECT table_name FROM information_schema.tables WHERE table.schema='db1' AND table_name like (select tc from db2.tab1 where col1='test') ); @var1返回一个表名 UPDATE

我必须根据查询中设置的变量执行更新和选择操作

SET @var1:=(SELECT table_name 
            FROM information_schema.tables 
            WHERE table.schema='db1' AND table_name like
                 (select tc from db2.tab1 where col1='test')
           );
@var1返回一个表名

UPDATE @var1 SET col2='Test' WHERE 1=1;
但我在@var1附近发现了错误


我真的需要传递@var1 to update语句。如何继续?

MySQL不喜欢动态SQL。您需要使用预先准备好的语句,例如

set @s = CONCAT( ' UPDATE ',@var1,  'SET ......); -- your query

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

MySQL不喜欢动态SQL。您需要使用预先准备好的语句,例如

set @s = CONCAT( ' UPDATE ',@var1,  'SET ......); -- your query

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