提问者:小点点

要在同一查询中使用的动态数据库名称,而不使用存储的过程


有没有可能在MySQL中做这样的事情:

选择*,CONCAT(schema_name,'.','my_table')作为database_name,from table_a a inner join table_b b on b.id=a.id inner join database_name c on a.id2=c.id;

基本上,database_name的值取自现有查询,并且将在同一查询中使用。

有没有可能在不使用存储过程的情况下执行这样的操作?如果不是,在Java有没有可能做到这一点,而不使用循环?


共1个答案

匿名用户

在一个查询中不可能做到这一点。不过,它不需要存储过程。

查询中的标识符不能是变量;MySQL需要实际知道对象的名称(表、列、函数等)提交SQL文本时;标识符不能在执行时改变。

这不需要存储过程,但需要两个单独的SELECT语句。一个选择检索数据库标识符。并且从中得到的值可用于为提交到数据库的另一个SELECT生成包含SQL文本的字符串。