数据库名称作为MySQL查询中的变量

时间:2017-06-05 09:14:06

标签: mysql

我正在创建一个需要与多个数据库一起运行的MySQL转储文件。 结构几乎是这样的:

SET @parent_database = 'db_name';
CREATE OR REPLACE VIEW t_colours AS SELECT `key_name`, `value` FROM @parent_database.`colours` as COLOURS WHERE 1;

下次运行此查询时,我的计划是仅更改变量parent_database

这可能吗?

现在我每次都跑这个,我收到一个错误:

  

1064 - 您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便在' @ parent_database .colours`附近使用作为COLORS WHERE 1'在第1行

有任何方法可以实现这一目标吗?

还有很多观点要创作。

1 个答案:

答案 0 :(得分:0)

当你执行查询时,mysql认为表名是对象而不是字符串,因此这不会像你期望的那样工作。

然而,有一条出路,你可以使用类似下面的代码片段。

select case when t2.fld2 is not null then 1 else 2 end as seq, t1.*
from table1 t1
left outer join table2 t2 on t1.fld1=t2.fld2
order by 1