我正在创建一个需要与多个数据库一起运行的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行
有任何方法可以实现这一目标吗?
还有很多观点要创作。
答案 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