有时我会写跨越十多行的复杂查询。然后,我需要在其他复杂查询中使用这些查询。是否可以给查询一个名称,然后在运行时将该名称简单地替换为实际查询?

例如:

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;


有点笨重,但是可以用。

09-05 22:31
查看更多