有时我会写跨越十多行的复杂查询。然后,我需要在其他复杂查询中使用这些查询。是否可以给查询一个名称,然后在运行时将该名称简单地替换为实际查询?
例如:
SET var_a = 'select f1, sum(f2) where .... (select .. from (select .. from))';
SET var_b = 'select g1, sum(g2) where .... (select .. from (select .. from))';
select z1, z2 from var_a union var_b;
mysql CLI可以像bash一样做一些简单的字符串替换吗?这样,我不必费心创建视图就可以在退出时清理它们。
最佳答案
我发现的关闭解决方案是这样的:
SET @var_a = 'select f1, sum(f2) where .... (select .. from (select .. from))';
SET @var_b = 'select g1, sum(g2) where .... (select .. from (select .. from))';
SET @s = CONCAT('select ... from (', @var_a, ' union all ', @var_b, ')a');
PREPARE stmt FROM @s; EXECUTE stmt;
有点笨重,但是可以用。